2012-03-12 2 views
0

Я был назначен ответственным за тестирование веб-приложения без рельсов с использованием огурца. Я тестировал базовые тесты, I.E. Я могу делать вещи, какRescing HTTP 404 Mechanize :: ResponseCodeError Исключения с огурцом, механизацией, Webrat

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?

Спасибо.

ответ

3

С первого примера это выглядит как вы используете 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 

Edit: еще лучше, вы можете использовать блок синтаксис raise_error для проверки код ответа напрямую:

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

Большое спасибо! Мне пришлось потребовать механизировать и механизировать/response_code_error в моем env.rb, чтобы сделать эту работу, но теперь я могу проверить исключение. = D –

Смежные вопросы