我花了最后一小时试图找出为什么这个测试不会通过。
我正在使用Capybara 2.1.0和rspec 2.14.1
在Rails 4.0中工作这是我的测试:
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”,文字“Stats” 失败/错误:它{should have_selector'h1',text:'Stats'} 水豚:: ExpectationNotMet: 期望找到带有“Stats”文字的css“h1”,但没有匹配 './spec/features/stats_spec.rb:7:in'块(3级)'
我很难过。任何帮助将不胜感激。
顺便说一句,我的索引页面正确呈现而没有任何错误。
答案 0 :(得分:0)
如果它在您访问页面时有效,但在您运行测试脚本时则无效,那么肯定存在会话或身份验证问题。您的索引页面是否受到任何身份验证或授权逻辑的保护?
我不能给你一个解决方案,但我可以试着给你一个指导,如果还没有,请使用pp
向控制台输出页面的渲染。
例如,如果您在controllers
目录中进行测试,请使用pp response.body
。或者,如果您要在views
目录中进行测试,请使用render
,然后使用pp rendered
。
然后从控制台的输出中,你肯定会根据你追加的内容的具体逻辑得到线索。