用蚊进行clojure试验

用蚊进行clojure试验,clojure,midje,Clojure,Midje,我的函数接受一个map参数,在该参数中我从中获取存款值。目前,我能够测试诸如存款值是否为空或存款值是否大于某个值等场景。我的API跟踪用户进行存款的次数,并使用atom对此进行跟踪,当用户进行了超过4次存款时,他/她应该会收到某个错误消息。如何使用midje测试此场景 下面是我的示例测试用例: (facts "Mytesting" (fact "Invalid Amount" (let [response (httpserver/app (mock/req

我的函数接受一个map参数,在该参数中我从中获取存款值。目前,我能够测试诸如存款值是否为空或存款值是否大于某个值等场景。我的API跟踪用户进行存款的次数,并使用atom对此进行跟踪,当用户进行了超过4次存款时,他/她应该会收到某个错误消息。如何使用midje测试此场景

下面是我的示例测试用例:

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

首先,您应该先编写测试:-)

但由于代码已经存在,我将告诉您我通常是如何工作的:

  • 我将测试分为测试HTTP路由(就像您在这里所做的那样)。在这里,我使用Midje提供的
    功能验证是否正确调用了支持函数
  • 其他测试直接调用支持函数,传入类似于环请求的映射(或Yada上下文,或您使用的任何内容)。在这里,您还可以使用
    提供的
    模拟任何其他不直接相关的功能
  • 支持函数通常委托给实际的“业务”函数,这些函数不知道http请求,但只接受并返回业务实体(通常只是Clojure中的映射和向量)
当然,您也可以添加验证整个代码堆栈行为的端到端测试,但这可能涉及设置数据库等

要了解更多关于如何测试特定代码的信息,我需要了解更多关于内部工作的信息