У меня было несколько комбинированных тестов контроллера / представления, написанных с помощью rspec. Я добавил гем Capybara и написал несколько интеграционных тестов, которые хорошо проходят. Единственная проблема заключается в том, что теперь во всех моих тестах контроллера, где у меня есть
response.should have_selector («некоторый селектор»)
rspec выдает такие ошибки, как:
NoMethodError:
undefined method `has_selector?' for #<ActionController::TestResponse:0xa03e7ec>
когда я запускаю тесты контроллера. Я предполагаю, что Capybara используется в моих тестах контроллера и переписал некоторые методы Rspec. Как я могу это исправить?
# gemfile.rb
group :test do
gem 'rspec'
gem "capybara"
gem "launchy"
gem 'factory_girl_rails', '1.0'
end
# spec_helper.rb
RSpec.configure do |config|
config.include IntegrationSpecHelper, :type => :request
end
Вот пример неудачного теста:
# spec/controllers/books_controller_spec.rb
require 'spec_helper'
describe BooksController do
render_views
it "should have the right page title" do
get :show, :id => @book.ean
response.should have_selector("title", :content => "Lexicase | " + @book.title)
end
end
и связанная с ним ошибка:
1) BooksController GET 'show' should have the right page title
Failure/Error: response.should have_selector("title", :content => "Lexicase | " + @book.title)
NoMethodError:
undefined method `has_selector?' for #<ActionController::TestResponse:0xa8488c0>
# ./spec/controllers/books_controller_spec.rb:23:in `block (3 levels) in <top (required)>'