我们有一个功能:
@smoke @acceptance
Scenario: Home page is available
When I visit the home page url
Then I expect no error code
最后一行实现为:
Then(/^I expect no error code$/) do
expect(page.status_code).to eq 200
end
这有时会失败。调试时,我们发现了以下内容:
200
204
响应
(导致测试失败)这表明page.status_code
不等于所请求的实际URL的状态代码,但可以设置为页面请求的任何(或可能是最后?)资源的状态代码。
这是正确的解释,是page.status_code
的预期行为吗?
注意:
204
可以被解释为成功,但这不是
本期重点答案 0 :(得分:0)
status_code返回触发phantomjs onLoadStarted回调的最后一个请求的结果 - 这应该是页面,或者可能是页面发起的ajax请求 - 它不应该是资源直接作为页面上的资源加载(img, javascripts,css等)。如果它是一个依赖资产,则phantomjs有一个问题,应该在该项目上报告可重复的示例。通过204响应报告什么类型的请求?如果它是一个ajax请求,那么它就像预期的那样 - 如果不是那么它就是phantomjs中的一个bug。注意:使用Capybara时检查响应代码确实是一种反模式,您通常应该坚持测试页面上的可见更改。