如何为两个用户交互创建集成级别测试?

时间:2009-09-23 00:00:46

标签: ruby-on-rails cucumber integration-testing webrat

您如何测试与Cucumber / webrat的多用户交互?

意味着必须有多个用户登录。很好的例子是简单的聊天应用程序,我希望将消息从一个用户发送到另一个用户并检查其他用户是否收到了消息。

我想在集成级别进行测试,没有任何存根或嘲弄。

3 个答案:

答案 0 :(得分:2)

我将Selenium RC用于控制不同浏览器的两个独立实例。我想可能还有其他工具用于基于Web的集成测试,这些测试与Selenium一样有用,甚至更多,但就个人而言,我还没有遇到过。

答案 1 :(得分:1)

我知道应该怎么做,我找不到合适的地方:

您需要创建第二个Webrat::Session实例,您免费获得的原始webrat_session可以是一方,而新的实例可以是另一方。我可能会创建两个新的命名会话,因此我可以命名它们。

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"

答案 2 :(得分: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发送轮询请求以获取最新消息,它仍在发送请求。在这种情况下,您可以通过简单地执行一个步骤来测试ajax调用,其中user_b调用ajax请求正在调用的url。