gpt4 book ai didi

ruby - 使用 Cucumber、Mechanize、Webrat 拯救 HTTP 404 Mechanize::ResponseCodeError 异常

转载 作者:太空宇宙 更新时间:2023-11-03 17:58:12 24 4
gpt4 key购买 nike

我负责使用 Cucumber 测试非 Rails 网络应用程序。我已经启动并运行了基本测试,I.E.我可以做类似的事情

Then /^the page should have a header$/ do
response_body.should have_xpath(%\//header\)
end

接下来我要测试的是不存在的页面,除了显示友好的错误页面外,还会返回正确的 HTTP 响应代码 (404)。

当我在 cucumber 测试期间访问 404 页面时,会发生以下情况。

Scenario: Visit a url which does not lead to a page # features\404.feature:6
Given I try to visit a fake page # features/step_definitions/404_steps.rb:1
404 => Net::HTTPNotFound (Mechanize::ResponseCodeError)
./features/step_definitions/404_steps.rb:2:in `/^I try to visit a fake page$/'
features\404.feature:7:in `Given I try to visit a fake page'
When the page loads # features/step_definitions/home_steps.rb:5

这对于测试您期望存在的页面很有意义,但我真的希望也能够测试我的错误。

我的问题是,如何拯救 Mechanize::ResponseCodeError 以便我可以验证 404 错误页面的正确性?

谢谢。

最佳答案

从您的第一个示例看来您正在使用 rspec,因此您可以使用它的断言来验证错误:

When /^I try to visit a fake page$/ do
lambda {
Mechanize.new.get('http://example.org/fake_page.html')
}.should raise_error(Mechanize::ResponseCodeError, /404/)
end

编辑:更好的是,您可以使用 raise_error 的 block 语法直接验证响应码:

.should raise_error{|e| e.response_code.should == '404'}

关于ruby - 使用 Cucumber、Mechanize、Webrat 拯救 HTTP 404 Mechanize::ResponseCodeError 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9661669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com