为什么这个rspec测试通过了?

时间:2013-07-16 00:33:34

标签: ruby-on-rails rspec capybara

我花了最后一小时试图找出为什么这个测试不会通过。

我正在使用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级)'

我很难过。任何帮助将不胜感激。

顺便说一句,我的索引页面正确呈现而没有任何错误。

1 个答案:

答案 0 :(得分:0)

如果它在您访问页面时有效,但在您运行测试脚本时则无效,那么肯定存在会话或身份验证问题。您的索引页面是否受到任何身份验证或授权逻辑的保护?

我不能给你一个解决方案,但我可以试着给你一个指导,如果还没有,请使用pp向控制台输出页面的渲染。

例如,如果您在controllers目录中进行测试,请使用pp response.body。或者,如果您要在views目录中进行测试,请使用render,然后使用pp rendered

然后从控制台的输出中,你肯定会根据你追加的内容的具体逻辑得到线索。