我正在对我的luminus应用程序进行测试,我想测试我的post函数,如下所示。但是,数据以字节输入流的形式发布在请求对象的主体上。如何将数据发布到请求对象的params key上?我从这个链接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")))发布于 2016-02-18 21:34:55
得到答案后,我将mock/request绑定到了环处理程序函数defroutes app-routes中,而不是app var:
(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")))https://stackoverflow.com/questions/35477995
复制相似问题