Испорченные тесты контроллера после установки Capybara? - PullRequest
0 голосов
/ 22 марта 2011

У меня было несколько комбинированных тестов контроллера / представления, написанных с помощью 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)>'

Ответы [ 2 ]

2 голосов
/ 22 марта 2011

Вы, вероятно, ранее использовали Webrat, а has_selector? - сопоставитель Webrat.У Capybaras нет совпадения has_selector, у него есть совпадение с именем has_css .Вы можете заменить has_selector на has_css.

1 голос
/ 27 августа 2011

Помощники Capybara работают только в пределах спецификаций запросов.Либо создайте новую спецификацию запроса, либо передайте: type =>: request в части блока description, например так:

describe "test for the testing test", :type => :request do
  it "should work with capybara" do
    visit root_path
    click_link "Home"
    page.should WHATEVA
  end
end

Я понимаю, что этот вопрос задавался очень давно, но я подумал, чтоподелись в любом случае.GLHF

...