ライブラリ レコードを管理するための Ruby on Rails アプリケーションを作成しています。ウェブサイトは grinnelllendinglibrary.herokuapp.com にあります。マネージャーがサインインすると、各本のレコードの横に「チェックアウト」アクションへのリンクが表示されることをテストしたいと思います。私の問題は、この Cabybara/Rspec テストが失敗していることです。その理由はわかりません。
describe "on the index page" do
before(:each) do
click_link "Index"
end
....
it "should have a checkout link" do
page.should have_link("Checkout")
# I've also tried a bunch of other tests; these also failed:
#page.should have_content "Checkout"
#find('div').should have_link('Checkout')
#find_link('Checkout').visible? == 'true'
end
.....
end
エラーメッセージは次のとおりです。
Failure/Error: page.should have_link("Checkout")
expected link "Checkout" to return something
# ./spec/requests/layout_links_spec.rb:172
すでに確認したいくつかのこと: 1) これはサインインの失敗によるものではありません。この同じブロック内の他のテストは、マネージャーのサインイン時にのみ表示されるヘッダー内のリンクを正しく検出します。見つからないのは本の部分的なリンクだけです。2) リンクは Web サイト自体に表示されます。失敗しているのはテストだけです。
本の部分的なコード:
<div class="book">
<div class="title">
<%= book.name %>
</div>
<% if signed_in? and is_manager? %>
<%= link_to "Entry", book%>
<%= link_to "Delete", book, :method => :delete, :confirm => "Are you
sure?", :title => "Delete #{book.name}" %>
<%= link_to "Checkin", checkin_book_path(book), :method => :put%>
<%= link_to "Checkout", checkout_book_path(book), :method => :put%>
<% end %>
<br>
<p class="moreinfo">
Authors(s): <%= book.authors %><br>
<% if book.edition != nil %>
Edition: <%= book.edition %>
<% else %>
Edition: N/A
<% end %>
<br>
Copies available: <%= book.avail_copies
%>/<%= book.total_num_copies %>
</p>
</div>
Rails 3.2.12、rspec-rails 2.8.1、およびカピバラ 1.1.2 を使用しています