39

リクエスト仕様に次のテストがあります。

page.should have_link('Edit user', :href => edit_users_path(@user))

これにより、インデックス ビュー内の特定のユーザーが編集リンクを持っていることが確認されます。次のような同じリンクをクリックしたいと思います。

click_link('Edit user', :href => edit_users_path(@user))

残念ながら、click_link はオプションを受け入れません。

これを行う良い方法はありますか?

テーブルに #id を含める<tr>か、次の<td>ようなことを行う必要があります。

within(#user_id)
  click_link 'Edit user'
end

テストを機能させるためだけに、ビューをいじくり回すのは避けたいと思います。

4

6 に答える 6

45

検索を使用できますfind(:xpath, "//a[@href='/foo']").click

于 2013-02-19T12:57:14.867 に答える
20

これを行うには、Capybara の下位レベルのインターフェースを使用できます。試す:

find("a[href='#{edit_users_path}']").click
于 2014-12-09T14:02:00.660 に答える
11

最終的にヘルパーモジュールを追加しましたspec/support/selectors.rb

module Selectors
  Capybara.add_selector(:linkhref) do
    xpath {|href| ".//a[@href='#{href}']"}
  end
end

次に、私が使用するテストで

find(:linkhref, some_path).click
于 2013-03-13T08:09:53.373 に答える