要求がrspecで長時間かかる場合の動作をテストするにはどうすればよいですか?時間がかかるHTTPリクエストをどのようにテスト(rspec)するのですか?
私はこれを模擬するためにスレッドを使用して考えています:
describe "Test" do
it "should timeout if the request takes too long" do
lambda {
thread1 = Thread.new { #net::http request to google.com }
thread2 = Thread.new { sleep(xx seconds) }
thread1.join
thread2.join
}.should raise_error
end
end
私は要求が最初に行われた後ことを確認するには、この場合にはXXのためだけの睡眠である別のスレッド「のキックは」秒。それから、実行には時間がかかりすぎてリクエストがタイムアウトすると思うはずです
私はこれを行うより良い方法があると思います。私が要求しているURLが関連していないという事実を考えると、私はちょうどそれが実行するには時間がかかりすぎる場合は、実際にタイムアウトになることをテストしたい。
これをシミュレートするためにstub()、expect()、またはrspecの機能を使用できますか?
ですが、私はあなたが純粋にネット:: HTTPのタイムアウトを上げ::エラーを気にした場合は任意のヘルプは
右。ネットワーキング呼び出し自体は重要ではありません。 「模擬テストでエラーを返すように強制する」ことは、実行時間が長すぎる(またはタイムアウトに達した)ときにテストが失敗することを意味します。 – dvliman
あなたの言いたいことから何を求めているのかちょっと混乱しています。テストにX秒以上かかることがないようにしていますか?または、ネットワークコールが長時間実行された場合に、理論的に何が起こるかをテストしようとしていますか?あなたが後者をテストしようとしているなら、私が与えた例はあなたのためにそれを行います。 –
私は後者をテストしようとしています。ああ、私はRspec :: Mocksについてもっと読む必要があると思う。ありがとう! – dvliman