2017-02-20 35 views
2

Я борюсь с помощью простого тестарельсов не испытать RSpec водосвинки have_c не соответствует

require "rails_helper" 

RSpec.feature "Home page", :type => :feature do 
scenario "When a user visit it" do 
    visit "/" 
    expect(page).to have_css('article', count: 10) 
end 
end 

в представлении у меня есть этот код

<% @articles.each do |article| %> 
    <article> 
    <header> <%= article.title%> </header> 
    <div class="content-summary"> <%= article.body %> </div> 
    </article> 
    <hr/> 
<% end %> 

когда я запускаю тест я получаю

Failure/Error: expect(page).to have_css('article', count: 10) 
    expected to find css "article" 10 times but there were no matches 

Я запускаю сервер, и я вижу, что существует 10 тегов статьи.

, когда я меняю мнение на этот

<% 10.times do %> 
    <article> 
    <header> </header> 
    <div class="content-summary"> </div> 
    </article> 
    <hr/> 
<% end %> 

проверка по перевале

Пожалуйста, помогите мне

+0

не могли бы вы показать весь тестовый файл? –

+0

@ Slava.K Я добавил весь тестовый файл –

+3

В вашем тесте нет статей. Вам нужно создать часть в блоке 'before'. При запуске сервера он использует базу данных 'development', а в тестовых наборах используется' test' one –

ответ

1

Рельсы имеют отдельные базы данных для каждого из окружающей среды. Локальный сервер запускается в режиме development по умолчанию и, следовательно, подключен к базе данных app_name_development. RSpec, однако, запускает тесты в среде test и использует базу данных app_name_test. Вот почему статьи, которые вы видите при запуске сервера, недоступны в тесте RSpec.

Тесты требуют ручной настройки данных. Если вы используете RSpec, то, я полагаю, вы также установили FactoryGirl. В этом случае тест должен выглядеть примерно так:

require "rails_helper" 

RSpec.feature "Home page", :type => :feature do 
    let!(:articles) { create_list(:article, 10) } 

    scenario "When a user visit it" do 
    visit "/" 
    expect(page).to have_css('article', count: 10) 
    end 
end 

 Смежные вопросы

  • Нет связанных вопросов^_^