Метод ответа не существует с Sinatra, Rspec & Capybara - PullRequest
3 голосов
/ 17 августа 2011

Я пытаюсь использовать 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)>'

Я немного покопался, и я могу решить проблему, добавив этот метод в файл спецификации:

def response 
    page.driver.browser.last_response
end

Но это кажется счастливым.

Есть ли лучшее решение? Чего мне не хватает?

1 Ответ

4 голосов
/ 17 августа 2011

Ну, нет способа ответа. Я думаю, что это только в аддонах Rails для RSpec2 / Capybara (не уверен в этом).

Просто используйте last_response вместо response:

last_response.should be_successful

и с тобой все будет в порядке.

Edit: Похоже, вам не хватает некоторых методов испытаний. Попробуйте это в вашем spec_helper.rb:

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

Вы должны будете потребовать rack/test раньше.

...