を行うことができますどのように
<a href="/room/grade3/10036" class="btn" title="Delete">
<i class="icon-delete"></i>
</a>
クリックする複数の方法がある - ちょうどリンクをクリックするようclick_linkは、リンクのID、テキスト、またはタイトルに一致しますがあなたは私が>要素は、あなたが
find_link('Delete', href: "/room/grade3/#{@student.id}").find('.icon-delete').click
find("a[href ='/room/grade3/#{@student.id}'] i.icon-delete").click
のいずれかを行うことができ<に特にクリックする必要がある場合は、
click_link('Delete', href: "/room/grade3/#{@student.id}")
を行うことができます
注:これらの修正でも、テストが失敗する可能性があります。これは、change
マッチャーを使用していて、ブロックが何もしていないために、変更マッチャーがスチューデントカウントを再度チェックする前にアクションが完了したことを確認するためです。これは、JSサポートドライバclick
のいずれかを使用するとボタンをクリックするだけで、待機する副作用についてはわからず、アプリがオフになっている間にテストに戻り、クリックがトリガーする動作を処理し始めるからです。あなたのテストは、生徒が実際に削除され、change
マッチャは学生が再びカウントを得ることができるまでのコードが遅れることになります。この方法で
expect {
... Do whatever clicking of link/button ...
expect(page).to have_text("Student deleted") # whatever message is shown once the student is actually deleted or an assertion for other visible change
}.to change(Student, :count).by(-1)
のようなものである必要があることを修正します。
findは2つの文字列を受け取りません - 実際に表示しようとしているHTMLを表示します –
– jerrytom