2017-11-01 5 views
0

いくつかのRailsコードをテストするためにCucumber + Seleniumを使用しています。この設定では、最初のステップ(ページのリクエスト)が完了してから2番目のステップが実行された後に、余分なリソース/遅延リクエストがブラウザにロードされるという問題が発生することがあります。ステップコードがキュウリで実行されている間にWebリクエストをブロックする

残念ながら、コードはスレッドセーフではなく、余分な要求と次のステップは同時に実行できません。

フィーチャー/ステップコードの特定のセクションが完成するまで、任意の要求を受け入れることを禁止する方法はありますか?キュウリまたはwebrickは関連する同期を公開していますか?

答えて

1

あなたができることの1つは、最初のリクエストで余分なリソースから何かを探して、ロードされるまで完了しないようにすることです。あなたがカピバラを使用している場合、これを行うことが非常に良いことがわかります。

もう1つのことは、余分なリソースをロードするために使用しているjavascriptがロードされないため、代わりにラックドライバを使用することです。あなたのテストのために余分なリソースが必要ない場合は、なぜそれらをロード:)

+0

私はそれが残念なことにより一般的なものが必要です。私は再利用可能なステップで、どこで使われているのかにかかわらず、 "なぜこれが実行されているのかわからない"と言ってほしい。 (これは特定のリソースに依存することはできません)私はあなたがラックドライバーの意味を理解していませんか?それを拡大できますか? – viraptor

+0

レール付きクッキングのデフォルトスタックは、Cucumber、Capybara、Rack(https://rack.github.io/)です。 Rackは、RubyとRubyのフレームワークを使用するWebサーバー間で最小限のインターフェースを提供します。 Rails。カピバラはあなたのクスクスとあなたのブラウザの間の仲介者として行動します。ラック、セレン、または他の多くのドライバを使用してWebサーバーと通信するようにCapybaraを設定することができます。 RackはWebサーバーとの直接的なシンプルで高速な会話ですが、Javascriptはサポートしていません。 Seleniumははるかに遅く、JavaScriptをサポートし、リアルブラウザやヘッドレスブラウザを使用できます。 – diabolist

関連する問題