dimanche 15 février 2015

Midje provided not stubbing function in Compojure / Ring handler

I'm attempting to use Midje to stub the view in a handler unit test, but my use of Midje's (provided) obviously isn't correct.


I've simplified and inlined the view to a (content) function in the handler:





(ns whattodo.handler
(:use compojure.core)
(:require [whattodo.views :as views]))

(defn content [] (views/index))

(defn index [] (content))

(defroutes app
(GET "/" [] (index)))



and am trying to test it using





(ns whattodo.t-handler
(:use midje.sweet)
(:use ring.mock.request)
(:use whattodo.handler))

(facts "It returns response"
(let [response (app (request :get "/"))]
(fact "renders index view" (:body response) => "fake-html"
(provided (#'whattodo.handler/content) => (fn [] "fake-html")))))



I was expecting the stubbed function to be called returning 'fake-html' and thus the unit test passing, but instead, the test fails as the real implementation is called - invoking the real view.


Aucun commentaire:

Enregistrer un commentaire