我有以下的规范:
it "deletes post", :js => true do ... ... page.status_code.should = '404' end
page.status_code行给我这个错误:
page.status_code
Capybara::NotSupportedByDriverError
如何查看页面的状态代码?
qmb5sa221#
作为旁白。这条线
page.status_code.should = '404'
应该是
page.status_code.should == 404
我用capybara-webkit做了这个。
cwtwac6a2#
status_code目前不受Selenium驱动程序支持。您将需要编写一个不同的测试来检查响应状态代码。
status_code
ercv8c1e3#
切换到另一个驱动程序(如rack-test)进行该测试,或测试显示的页面是404页面(应该在h1中有内容'Not Found')。正如@eugen所说,Selenium不支持状态码。
rack-test
iq0todco4#
Selenium web driver没有实现status_code,并且没有直接的方法来测试selenium的response_code(开发人员的选择)。为了测试它,我在我的layout/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
ssm49v7z5#
试试看
expect(page).to have_http_status(200)
pftdvrlh6#
使用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
查看https://gist.github.com/yovasx2/1c767114f2e003474a546c89ab4f90db了解更多详情
bwitn5fc7#
expect(page).to have_http_status(:ok)
是Ajay的answer的一个可接受的变体,如果为了可读性,您更喜欢状态符号而不是代码值。参考文献:
对于所有可用的状态代码/符号:
Rack::Utils::SYMBOL_TO_STATUS_CODE # or Rack::Utils::HTTP_STATUS_CODES
7条答案
按热度按时间qmb5sa221#
作为旁白。这条线
应该是
我用capybara-webkit做了这个。
cwtwac6a2#
status_code
目前不受Selenium驱动程序支持。您将需要编写一个不同的测试来检查响应状态代码。ercv8c1e3#
切换到另一个驱动程序(如
rack-test
)进行该测试,或测试显示的页面是404页面(应该在h1中有内容'Not Found')。正如@eugen所说,Selenium不支持状态码。
iq0todco4#
Selenium web driver没有实现status_code,并且没有直接的方法来测试selenium的response_code(开发人员的选择)。
为了测试它,我在我的layout/application.html.erb中添加了:
然后在我的测试中:
ssm49v7z5#
试试看
pftdvrlh6#
使用js发出请求并获取状态,如下所示:
查看https://gist.github.com/yovasx2/1c767114f2e003474a546c89ab4f90db了解更多详情
bwitn5fc7#
是Ajay的answer的一个可接受的变体,如果为了可读性,您更喜欢状态符号而不是代码值。
参考文献:
对于所有可用的状态代码/符号: