Ruby on Rails 3 + Rspec + Capybara:检查响应状态

我从Webrat迁移到Capybara,现在我遇到了很多错误。 例如在webrat中我可以在集成测试中使用它:

response.should be_success 

但Capybara表明:

 Failure/Error: response.should be_success NoMethodError: undefined method `success?' for nil:NilClass 

有没有提供这种function的方法?

UPD :我的规格:

 require 'spec_helper' describe "Admins" do before(:each) do @admin = FactoryGirl.create(:admin) visit '/' click_link "Login" fill_in "Email", :with => @admin.email fill_in "Password", :with => 'qwerty' click_button "Sign in" end describe "Admin panel" do it "should have correct links" do click_link "User" response.should be_success end end end 

你正在混合控制器和请求规范。

在控制器规范中,您检查response ,在请求规范中,您检查page内容,因为您只能访问html。

我找不到像success?一样的快捷方式的迹象success? 方法,但如果您的驱动程序支持它,您可以执行以下操作:

 visit(some_path) page.status_code.should == 200 

这是一段时间后补充的,但似乎没有充分记录。 此外,一些司机根本不向水豚提供信息。 特别提到了Selenium – 如果在使用Selenium驱动程序时尝试使用它会崩溃。

这可能对您有所帮助:

 expect(page).to have_http_status(200) 

请使用asset_exists? 在下一个要点中发挥作用

 def asset_exists?(src) js_script = < 

https://gist.github.com/yovasx2/1c767114f2e003474a546c89ab4f90db了解更多详情