2013-07-16 131 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)Stats Index Page應該有css「h1」和文本「Stats」 失敗/錯誤:it {should have_selector'h1',text:'Stats'} Capybara ::期望NotMet: 預計會找到帶有文本「Stats」的css「h1」,但沒有匹配 #./spec/features /stats_spec.rb:7:in'block(3 levels)in'

我很難過。任何幫助,將不勝感激。

順便說一下,我的索引頁正確呈現沒有任何錯誤。

回答

0

如果它在您訪問頁面時起作用,但在您運行測試腳本時不起作用,那麼確實存在會話或身份驗證問題。您的索引頁是否受到任何身份驗證或授權邏輯的保護?

我不能給你一個解決方案,但我可以嘗試給你一個指導方針,如果你還沒有做,使用pp輸出到控制檯的頁面渲染。

例如,如果您正在測試controllers目錄,請使用pp response.body。或者,如果您正在views目錄中進行測試,請使用render,然後再使用pp rendered

然後從控制檯的輸出結果中,您肯定會根據您所附加內容的具體邏輯得到一條線索。

+0

我討厭當我想念明顯但我確定感激的stackoverflow。 這正是問題所在。我正在使用設計,並忘記在測試中進行身份驗證。謝謝 –

+0

有時候,我們有時會在幾分鐘之內讓我們的頭腦遠離我們的代碼。乾杯:) – Benj