2017-02-01 6 views
4

私のテストをlein dooファントムで実行しているときに、-1ステータス応答と空の文字列が本体として受信されます。しかし、私がreplでテストを実行すると、200ステータス応答と本体の適切なデータを持つリクエストデータを取得できます。これは、以下に述べるように、多くのチャンネルが最初に返されているためです。もしそうなら、どうすればこのことを説明できますか?lein dooファントムを使用してcljs-httpでhttpリクエストをテストする方法

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

私も、多分私が完了する要求を待機するタイムアウトを使用する必要があると思いました。もしそうなら、私は既存のコードでそれを適切にどのように適用するのですか? cljs-http has: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)))) 

答えて

2

あなたはphantomjsの下でテストを実行しているので、 PhantomjsはデフォルトでクロスドメインXHRアクセスを無効にし、あなたのテストjはlocalhost上で実行されていますが、すべての外部ajax呼び出しは拒否されます。

--web-security=falseを設定すると、テストでクロスドメインajaxを実行できるようになります。あなたのproject.clj

はphantomjsについてこの

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

より多くの情報を追加

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

関連する問題