Восстановление HTTP 404 Mechanize::ResponseCodeError Исключения с помощью Cucumber, Mechanize, Webrat
Я был назначен ответственным за тестирование не-рельсового веб-приложения с использованием огурца. У меня есть базовое тестирование и работает, IE я могу делать такие вещи, как
Then /^the page should have a header$/ do
response_body.should have_xpath(%\//header\)
end
Следующее, что я хотел проверить, это то, что несуществующие страницы, в дополнение к дружественной странице с ошибками, возвращают правильный код ответа http (404).
Когда я visit
На странице 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?
Благодарю.
1 ответ
Из вашего первого примера похоже, что вы используете 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 для прямой проверки кода ответа:
.should raise_error{|e| e.response_code.should == '404'}