2017-07-14 3 views
0

Ma fonction accepte un argument de carte dans laquelle je reçois la valeur de dépôt de celle-ci. Actuellement, je suis en mesure de tester des scénarios comme si la valeur de dépôt est vide ou si la valeur de dépôt est supérieure à une certaine valeur, etc. Mon API suit le nombre de fois qu'un utilisateur effectue le dépôt et garde une trace de cela en utilisant un atome et quand l'utilisateur a fait plus de 4 dépôts, il/elle devrait obtenir un certain message d'erreur. Comment puis-je tester ce scénario en utilisant midje?test clojure utilisant moucheron

Ci-dessous mon échantillon cas de test:

(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"})))) 

Répondre

0

Eh bien, pour commencer, vous devriez écrire vos premiers tests :-).

Mais puisque le code existe déjà, je vais vous dire comment je travaille habituellement:

  • je partage les tests entre tester le routage HTTP (comme ce que vous faites ici). Ici, j'utilise la fonctionnalité provided fournie par Midje pour vérifier que les fonctions de sauvegarde sont invoquées correctement.
  • D'autres tests les fonctions invoquent support directement, en passant une carte qui ressemble à une demande de l'anneau (ou le contexte Yada, ou tout ce que vous utilisez). Ici, vous pouvez également utiliser provided pour rechercher d'autres fonctionnalités qui ne sont pas immédiatement pertinentes. Les fonctions de support délèguent généralement aux fonctions "business" réelles qui ne connaissent pas les requêtes http, mais qui acceptent et renvoient simplement les entités métier (généralement juste des cartes et des vecteurs dans Clojure).

Vous pouvez bien sûr ajouter également des tests de bout en bout qui permettent de vérifier le comportement de l'ensemble de la pile de code, mais qui peut impliquer la mise en place d'une base de données, etc ...

Pour en savoir plus sur la façon dont Pour tester votre code spécifique, je voudrais en savoir plus sur les rouages ​​internes.