it "deletes post", :js => true do
...
...
page.status_code.should = '404'
end
Линия page.status_code дает мне эту ошибку:
Capybara::NotSupportedByDriverError
Как проверить код состояния страницы?
Ответ 1
status_code в настоящее время не поддерживается драйвером Selenium. Вам нужно будет написать другой тест, чтобы проверить код состояния ответа.
Ответ 2
В стороне. Эта строка
page.status_code.should = '404'
Должно быть
page.status_code.should == 404
Это работало для меня с capybara-webkit.
Ответ 3
Либо переключитесь на другой драйвер (например, rack-test) для этого теста, либо проверьте, что отображаемая страница - это страница 404 (в h1 должна быть содержимое "Не найдено" ).
Как сказал @eugen, Selenium не поддерживает коды статуса.
Ответ 4
Попробуйте
expect(page).to have_http_status(200)
Ответ 5
Selenium web driver doest не реализует status_code, и нет прямого способа протестировать response_code с селеном (выбор разработчика).
Чтобы проверить это, я добавил в свой макет /application.html.erb:
<html code="<%= response.try(:code) if defined?(response) %>">[...]</html>
И затем в моем тесте:
def no_error?
response_code = page.first('html')[:code]
assert (response_code == '200'), "Response code should be 200 : got #{response_code}"
end
Ответ 6
Используйте js для запроса и получения статуса, как показано ниже:
js_script = <<JSS
xhr = new XMLHttpRequest();
xhr.open('GET', '#{src}', true);
xhr.send();
JSS
actual.execute_script(js_script)
status = actual.evaluate_script('xhr.status') # get js variable value