您将如何测试与 Cucumber/webrat 的多用户交互?
这意味着必须有多个用户登录。很好的例子是简单的聊天应用程序,我想从一个用户向另一个用户发送消息并检查另一个用户是否收到了消息。
我想在集成级别进行测试,没有任何存根或模拟。
您将如何测试与 Cucumber/webrat 的多用户交互?
这意味着必须有多个用户登录。很好的例子是简单的聊天应用程序,我想从一个用户向另一个用户发送消息并检查另一个用户是否收到了消息。
我想在集成级别进行测试,没有任何存根或模拟。
我将Selenium RC与控制不同浏览器的两个独立实例一起使用。我想可能还有其他用于基于 Web 的集成测试的工具,它们与 Selenium 一样有用,甚至更多,但就我个人而言,我还从未遇到过。
我知道应该怎么做,只是找不到合适的地方去做:
您需要创建第二个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"
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 调用。