2013-07-16 2 views
0

Я провел последний час, пытаясь понять, почему этот тест не пройдет.Почему этот тест rspec не пройдет?

Я работаю в Rails 4.0 с Капибара 2.1.0 и RSpec 2.14.1

Вот мой тест:

require 'spec_helper' 

describe "Stats" do 
subject { page } 
describe "Index Page" do 
    before { visit stats_path } 
    it { should have_selector 'h1', text: 'Stats' } 
end 
end 

И мой index.html.erb файл:

<h1>Stats</h1> 
<table> 
    <thead> 
<tr> 
    <th>Attendance</th> 
    <th>Salvations</th> 
    <th>Visitors</th> 
    <th>Offering</th> 
    <th>Service Date</th> 
    <th>Time</th> 
    <th>Campus</th> 
    <th></th> 
    <th></th> 
    <th></th> 
</tr> 
    </thead> 

    <tbody> 
    <% @stats.each do |stat| %> 
     <tr> 
    <td><%= stat.attendance %></td> 
    <td><%= stat.salvations %></td> 
    <td><%= stat.visitors %></td> 
    <td><%= stat.offering %></td> 
    <td><%= stat.date %></td> 
    <td><%= stat.time %></td> 
    <td><%= stat.campus.name %></td> 
    <td><%= link_to 'Show', stat %></td> 
    <td><%= link_to 'Edit', edit_stat_path(stat) %></td> 
    <td><%= link_to 'Destroy', stat, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
    </tr> 
<% end %> 
</tbody> 
</table> 

<br> 

<%= link_to 'New Stat', new_stat_path %> 

И ошибка, которую я получаю, это:

1) Страница индекса статистики должна иметь css «h1» с текстом «Статистика» Неисправность/ошибка: он должен {должен иметь_селектор 'h1', текст: 'Stats'} Capybara :: ExpectationNotMet: ожидал найти css «h1» с текстом «Stats», но не было совпадений # ./spec/features /stats_spec.rb:7:in `block (3 уровня) в '

Я в тупике. Любая помощь будет оценена по достоинству.

Кстати, моя индексная страница корректно отображается без ошибок.

ответ

0

Если он работает, когда вы посещаете страницу, но не при запуске тестового скрипта, то, безусловно, есть вопрос сеанса или аутентификации. Защищена ли ваша индексная страница какой-либо логикой аутентификации или авторизации?

Я не могу дать вам решение, но я могу попытаться дать вам руководство, если вы еще этого не сделали, используйте pp для вывода на консоль рендеринга страницы.

Например, если вы тестируете каталог controllers, используйте pp response.body. Или, если вы тестируете каталог views, используйте render, а затем pp rendered.

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

+0

Ненавижу, когда я пропускаю очевидное, но я уверен, благодарен за stackoverflow. Это точно проблема. Я использую устройство и забыл пройти аутентификацию в тесте. Спасибо –

+0

Всегда полезно иногда заставлять голову за пределами нашего кода. Приветствия :) – Benj

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