2014-02-26 2 views
4

에서 단위 테스트의 부작용이 나는 AMPQ 메시지 버스에서 메시지를 끌어 기능이 다른 하나는 로컬 컴퓨터의 디스크 IO에 있습니다.Clojure의

Clojure에서 부작용을 테스트하는 관용적 인 방법이 있습니까? 나의 첫번째 생각은 mock/stubs이었다. 그러나 만일 더 좋은 것이 있으면.

답변

6

나는 보통 내가 mq에서 반환 된 메시지를 테스트하고있어이 경우 with-redefs

(deftest ampq-messaing 
    "Test messaging" 
    (let [logit-msg (atom nil)] 
    (with-redefs [mq/get-message (fn [] "message") 
        logit (fn [msg] 
          (reset! logit-msg msg))] 
     (let [response (your-test-trigger)] 
     (is (= "message" @logit-msg)))))) 

를 사용하여 측면 effectish 기능을 조롱의 길을 갈 core.test 사용은 logit에 사용되는 하나이며, 난 으로 전화를 걸 수있는 내용이 있다고 가정합니다.