1

Cucumber/webrat とのマルチ ユーザー インタラクションをどのようにテストしますか?

つまり、複数のユーザーがログインしている必要があります。良い例は、あるユーザーから別のユーザーにメッセージを送信し、他のユーザーがメッセージを受信したかどうかを確認する単純なチャット アプリケーションです。

スタブやモックなしで、統合レベルでテストしたいと思います。

4

3 に答える 3

2

別々のブラウザを制御する 2 つの別々のインスタンスでSelenium RCを使用します。Selenium と同じかそれ以上の Web ベースの統合テスト用のツールが他にもあるのではないかと思いますが、個人的にはまだ出会ったことがありません。

于 2009-09-27T19:12:19.257 に答える
1

これを行う方法は知っていますが、それを行う適切な場所が見つかりません。

Webrat::Session2 番目のインスタンスを作成する必要があります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"
于 2009-09-28T23:55:04.900 に答える
0

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 呼び出しをテストできます。

于 2009-09-27T22:57:48.073 に答える