2017-07-14 6 views
0

私の関数は、そこから預金額を得るmap引数を受け取ります。現在、預金金額が空であるか、預金金額が特定の金額よりも大きいかどうかなどのシナリオをテストすることができます。私のAPIは、ユーザーが預金を行った回数を追跡し、ユーザーが4つ以上の預金を行った場合、特定のエラーメッセージを受け取る必要があります。 midjeを使用してこのシナリオをテストするにはどうすればよいですか?midgeを使ったクロージャーテスト

以下

は私のサンプルテストケースである:

(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機能を使用して、バッキング機能が正しく呼び出されたことを確認します。
  • その他のテストでは、バッキング関数が直接呼び出され、リング要求(またはYadaコンテキストなど)に似たマップが渡されます。ここでは、providedを使用して、すぐに関連性のない他の機能を模倣することもできます。
  • バッキング関数は、通常、http要求を知らずにビジネスエンティティ(通常はClojureのマップとベクトルだけ)を受け入れて返す実際の "ビジネス"関数に委譲します。方法についての詳細を知るために...など、

    をあなたはもちろん、全体のコード・スタックの動作を検証し、エンドツーエンドのテストを追加することができますが、それはデータベースを設定伴うこと

あなたの特定のコードをテストするためには、内部の動作についてもっと知る必要があります。

関連する問題