Cucumber/webrat とのマルチ ユーザー インタラクションをどのようにテストしますか?
つまり、複数のユーザーがログインしている必要があります。良い例は、あるユーザーから別のユーザーにメッセージを送信し、他のユーザーがメッセージを受信したかどうかを確認する単純なチャット アプリケーションです。
スタブやモックなしで、統合レベルでテストしたいと思います。
Cucumber/webrat とのマルチ ユーザー インタラクションをどのようにテストしますか?
つまり、複数のユーザーがログインしている必要があります。良い例は、あるユーザーから別のユーザーにメッセージを送信し、他のユーザーがメッセージを受信したかどうかを確認する単純なチャット アプリケーションです。
スタブやモックなしで、統合レベルでテストしたいと思います。
別々のブラウザを制御する 2 つの別々のインスタンスでSelenium RCを使用します。Selenium と同じかそれ以上の Web ベースの統合テスト用のツールが他にもあるのではないかと思いますが、個人的にはまだ出会ったことがありません。
これを行う方法は知っていますが、それを行う適切な場所が見つかりません。
Webrat::Session
2 番目のインスタンスを作成する必要がありますwebrat_session
。無料で入手したオリジナルを一方のパーティにすることができ、新しいインスタンスを他方のパーティにすることができます。名前を付けることができるように、2 つの新しい名前付きセッションを作成する場合があります。
alice = Webrat::Session.new #I think I have to hook this into merb and I don't know how
bob = Webrat::Session.new
alice.visit url(:chat)
bob.visit url(:chat)
alice.fill_in('chat', 'Hi, bob')
bob.visit url(:chat) #simulate poling
bob.responce.body should_contain "alice: Hi, bob"
HTTP はプル プロトコルです。これは、別のユーザーがアクションを実行したときにユーザーに通知できないことを意味します。このため、シナリオの途中でユーザーを切り替えるだけで十分です。チャットの例を挙げると、使用するキュウリのシナリオは次のとおりです。
Scenario: Send a message
When I login in as "user_a"
And I go to the chat page
And I fill in "message" with "blah blah"
And I press "Send"
And I switch_user_to "user_b"
And I go to the chat page
Then I should see "blah blah"
ページが最新のメッセージを取得するために ajax 経由でポーリング リクエストを送信している場合でも、ページはまだリクエストを送信しています。その場合、user_b が ajax リクエストが呼び出している URL を呼び出すステップを実行するだけで、ajax 呼び出しをテストできます。