如何使用lein doo phantom使用cljs-http测试http请求

时间:2017-02-01 19:39:58

标签: clojure clojurescript

在使用lein doo phantom运行我的测试时,我收到一个-1状态响应和一个空字符串作为正文。但是,当我在repl中运行测试时,我能够检索具有200状态响应的请求数据以及正文中的相应数据。这是因为如下所述,首先返回多个频道,从而给我不恰当的回应?如果是这样,我怎么能解释这个?

https://github.com/r0man/cljs-http#async-response-handling

我也想过我可能需要使用超时等待请求完成。如果是这样,我将如何适当地应用现有代码?它看起来像cljs-http有:timeout作为参数,但我还没有巧妙地让它正常工作(假设这是问题的原因)。

(deftest test-async
 (async done
      (go (let [response (<! (http/get "http://localhost:3000/api/user/1"
                                          {:with-credentials? false
                                           :query-params {"id" 1}}))]
            (is (= {:status 200}
                   (select-keys response [:status]))))
          (done))))

1 个答案:

答案 0 :(得分:2)

因为您在phantomjs下运行测试。 Phantomjs默认禁用跨域XHR访问,并且您的测试js在localhost上运行,所有外部ajax调用都被拒绝。

您可以设置--web-security=false以允许您的测试执行跨域ajax。

project.clj添加此

:doo {:paths {:phantom "phantomjs --web-security=false"}}

有关phantomjs的更多信息

http://phantomjs.org/api/command-line.html