1

CSS や面白いマッチャーを使用しないように、すべてのカピバラ コードを記述しようとしています。受け入れテストの目的で、私は Capybara を使用して、ユーザーに表示されるボタンとリンク テキストだけでナビゲートしています。

したがって、管理者が任意のユーザーを編集できることをアサートする非常に簡単なテストがあります。

it 'allows an administrator to edit any user' do
  user = login_admin_user
  user1 = FactoryGirl.create(:user)
  click_link "Users"
  current_path.should eq(users_path)
  click_link "Edit" # This is the problem
  current_path.should eq(edit_user_path(user1))
  fill_in "Last name", with: "Myxzptlk"
  click_button "Update User"
  page.should have_content("Myxzptlk")
end

もちろん、上記の問題行は十分に具体的ではありません。テーブルには 2 行 (user と user1) があります。私は TDD にかなり慣れていないので、Capybara を使用して、表示されているテキストのみを使用して正しいリンクを選択するにはどうすればよいですか?

4

1 に答える 1

1

「CSS または面白いマッチャー」を避けている理由がわかりません。それらをテストに入れたくない場合は、それらをヘルパー メソッドに抽象化します。

私の仕様では、次のようなヘルパー メソッドがあります。

module FeatureHelper
  def within_row(text, &block)
    within :xpath, "//table//tr[td[contains(.,\"#{text}\")]]" do
      yield
    end
  end
end

そして、私の仕様では、次のように呼び出すことができます。

within_row(user1.name) do
  click_link 'Edit'
end

ヘルパー モジュールはspec/supportフォルダー内に入り、次のようにしてスペックに読み込まれます。

config.include FeatureHelper, type: :feature

私の中でspec_helper.rb

于 2013-05-13T02:47:14.343 に答える