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

Exi*_*iRe 4 ruby rspec ruby-on-rails capybara ruby-on-rails-3

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

response.should be_success
Run Code Online (Sandbox Code Playgroud)

但Capybara表明:

Failure/Error: response.should be_success
     NoMethodError:
       undefined method `success?' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)

有没有提供这种功能的方法?

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
Run Code Online (Sandbox Code Playgroud)

apn*_*ing 15

您正在混合控制器和请求规范.

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


Ner*_*ter 13

我找不到像success?方法一样的快捷方式的指示,但是如果你的驱动程序支持它,你可以这样做:

visit(some_path)
page.status_code.should == 200
Run Code Online (Sandbox Code Playgroud)

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