响应方法不适用于Sinatra,Rspec&水豚

时间:2011-08-17 19:19:13

标签: rspec sinatra capybara

我正在尝试使用Capybara + Rspec来测试Sinatra应用程序,我在将Capybara与Rspec集成时遇到了一些麻烦。这是我的spec_helper.rb

require './myapp'
require 'capybara/rspec'
Capybara.app = MyApp

然后,在我的app_spec.rb中,我有:

require_relative 'spec_helper'

describe "My App", type: :request do
    describe "get 'home'" do
        it "should be successful" do
            visit '/'
            response.should be_successful
        end
    end
end

根据我能找到的所有文档,这应该可以正常工作。 。 。但是当我运行rspec spec时,我得到了这个:

Failures:

  1) Our App get 'home' should be successful
     Failure/Error: response.should be_successful
     NameError:
       undefined local variable or method `response' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x007f8321289e60>
     # ./spec/app_spec.rb:11:in `block (3 levels) in <top (required)>'

我已经做了一些挖掘,我可以通过将此方法抛入spec文件来解决问题:

def response 
    page.driver.browser.last_response
end

但那感觉很糟糕。

有更好的解决方案吗?我错过了什么?

1 个答案:

答案 0 :(得分:4)

没有回应方法。我认为这只是在RSpec2 / Capybara的Rails插件中(不确定)。

只需使用last_response代替response

last_response.should be_successful

你应该没事。

修改 好像你缺少一些测试方法。在spec_helper.rb

中试试这个
RSpec.configure do |conf|
  conf.include Rack::Test::Methods
end

您之前需要rack/test