开发者

Response Method not there with Sinatra, Rspec & Capybara

I'm trying to use Capybara + Rspec to test a Sinatra app, and I'm having some trouble integrating Capybara with Rspec. Here's my spec_helper.rb:

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

Then, in my app_spec.rb, I have:

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

According to all the documentation I can find, this should work fine . . . but when I run rspec spec, I get this:

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)>'

I've done a bit of digging around, and I can solve the problem by throwing this method into the spec file:

def response 
    page.driver.browser.last_response
end

But that feels hacky.

Is there a better solution? What am I missing?


Well there is no response method. I think that's only in the Rails addons for RSpec2/Capybara (not sure about this).

Just use last_response instead of response:

last_response.should be_successful

and you should be fine.

Edit: Seems like you are missing some test methods. Try this in your spec_helper.rb:

RSpec.configure do |conf|
  conf.include Rack::Test::Methods
end

You will need to require rack/test before.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜