我正在对我的流明应用程序进行测试,我想测试我的后期功能,如下所示。但是,数据作为字节输入流发布在请求对象的正文中。如何使数据发布在请求对象的参数键上?我从这个链接中得到了这个例子 http://www.jarrodctaylor.com/posts/Compojure-Address-Book-Part-1/
(defn example-post [request]
(let [post-value (get-in request [:params :example-post])]
(str "You posted: " post-value)))
(fact "Test POST"
(let [response (app (mock/request :post "/post" {:example-post "Some data"}))]
(:status response) => 200
(:body response) => "You posted: Some data")))
得到答案,我在环形处理程序函数 defroutes 应用程序路由中绑定模拟/请求,而不是应用程序变量:
(defroutes app-routes
(GET "/" [] tests)
(POST "/post" [] example-post)
(not-found "invalid request"))
(def app
(wrap-defaults app-routes (assoc-in site-defaults [:security :anti-forgery] false)))
正确的方法:
(fact "Test POST"
(let [response (app (mock/request :post "/post" {:example-post "Some data"}))]
(:status response) => 200
(:body response) => "You posted: Some data")))
不正确的方式
(fact "Test POST"
(let [response (app-routes (mock/request :post "/post" {:example-post "Some data"}))]
(:status response) => 200
(:body response) => "You posted: Some data")))