Ожидается, что CSS "Home" вернет что-то RSpec - PullRequest
1 голос
/ 14 октября 2011

Я пытаюсь заставить мой набор тестов работать и у меня возникают некоторые проблемы.

#home_controller_spec.rb
require 'spec_helper'

describe HomeController do
  describe "GET 'index'" do
    it "should be successful" do
      get 'index'
      response.should be_success
    end
    it "should have the right h2" do
      get 'index'
      response.should have_selector('h2', :content => 'Home')
    end
  end
end

Первый тест работает и проходит просто отлично. Каждый раз, когда я пытаюсь запустить

response.should have_selector('[anything]')

выдает эту ошибку:

2) HomeController GET 'index' should have the right h2
   Failure/Error: response.should have_selector('h2','Home')
   expected css "Home" to return something
 # ./spec/controllers/home_controller_spec.rb:12:in `block (3 levels) in <top (required)>'

Я использую Rails 3.1 и RSpec 2.6 и уже удалил и переустановил Rspec. Тот же результат происходит во всех моих тестах контроллера.

Есть идеи, как исправить эту ошибку?

Заранее спасибо!

Edit: Удалил все драгоценные камни. Переустановил все драгоценные камни. Переустановите RSpec, Capybara и Guard. Кажется, сейчас работает. Спасибо за помощь. Не уверен, что не так.

Ответы [ 2 ]

3 голосов
/ 14 октября 2011

По умолчанию RSpec не отображает шаблоны в спецификациях контроллера.Вы можете:

1) Переместить тест в спецификацию представления

2) Добавить render_views к блоку описания в спецификации контроллера, который затем отобразит шаблон.

Вариант 1 является предпочтительным ИМО.Вы также можете использовать спецификацию запроса для проверки содержимого.Если вы пишете спецификации запроса, спецификации просмотра обычно излишни.

2 голосов
/ 26 июня 2012

С rspec-rails gem V. 2.10.0 Это хорошо сработало для меня

it "should have the right title" do
  visit '/pages/howto'
  page.should have_selector("title", :text => "Abusa.me | Como funciona?")
end
...