2017-07-14 46 views
0

我的函數接受一個map參數,其中我從中獲取存款值。目前,我可以測試場景,例如存款金額是否爲空或存款金額是否大於某個特定值等。我的API會跟蹤用戶存款的次數,並使用原子跟蹤此次數,以及何時用戶已經超過4個存款,他/她應該會收到一定的錯誤信息。我如何使用midje測試這個場景?使用蚊帳進行clojure測試

下面是我的樣本測試案例:

(facts "Mytesting" 
     (fact "Invalid Amount" 
      (let [response (httpserver/app (mock/request 
               :post "/deposit" 
               {:deposit "9"}))] ; 
       (:status response) => 422 
       (:headers response) => {"Content-Type" "application/json; charset=utf-8", "X-Content-Type-Options" "nosniff", "X-Frame-Options" "SAMEORIGIN", "X-XSS-Protection" "1; mode=block"} 
       (:body response) => (json/write-str {:status-code -2 :status-msg "Invalid Amount"})))) 

回答

0

嗯,首先,你應該寫你的測試第一:-)。

但由於代碼已經存在,我會告訴你我是怎麼平時工作:

  • 我測試HTTP路由(如你在這裏做什麼)之間分裂的測試。在這裏,我使用Midje提供的provided功能來驗證支持功能是否正確調用。
  • 其他測試直接調用後備函數,傳入類似於Ring請求(或Yada上下文,或任何您使用的)的映射。在這裏,您還可以使用provided來嘲笑任何其他不直接相關的功能。
  • 支持函數通常委託給不知道http請求的實際「業務」函數,但只接受並返回業務實體(通常只是Clojure中的映射和向量)。

你當然也可以增加終端到終端的測試,驗證整個代碼協議棧的行爲,但可能包括建立一個數據庫,等等

要了解更多關於如何爲了測試你的具體代碼,我需要更多地瞭解內部工作。