ないと言っている:リンクがブラウザに表示されますが、テストでは、それがリスト内のいずれかの記事は、ログインしているユーザーに属している場合編集リンクをチェックし、私はRSpecのテストを持って
let(:user) { Fabricate(:user) }
before do
visit new_user_session_path
fill_in 'Email', :with => user.email
fill_in 'Password', :with => user.password
click_button 'Sign in'
end
describe 'when user has a self-authored article' do
let(:article) { Fabricate(:article, :author_id => user.id) }
before { visit articles_path }
it { should have_link('Edit article', :href => edit_article_path(article)) }
end
これらの
# articles/new.html.erb
<% provide(:title, 'Articles') %>
<h1>Articles</h1>
<% if user_signed_in? %>
<%= link_to 'Post article', new_article_path %>
<% end %>
<%= render @articles %>
<%= will_paginate %>
これは、それがテストしていること、特定のビューがある:それはテストのビューがある
# articles/_article.html.erb
<% if user_signed_in? %>
<% if current_user.id == article.author.id %>
<%= link_to 'Edit article', edit_article_path(article) %>
<% end %>
<% end %>
私がテストを実行
、I次のエラーメッセージが表示されます。Failure/Error: it { should have_link('Edit article', :href => edit_article_path(article)) }
expected link "Edit article" to return something
ブラウザがテストが正しいことを確認しましたが、リンクが意図したとおりに表示されているようです。どこで私は間違えましたか?テストパスを作成するにはどうすればよいですか?
'let'の代わりに' let! 'を使って、期待した動作を強制することができます。 – Thilo
私はそれを知らなかった。 TIL –