0

私はこれに少し慣れていませんが、rspecにリンクをクリックさせようとしています。索引ページャーの「表示」リンクを、アイテムの名前であるリンクに置き換えました。

つまり、私のビューにはこれがあります

     <td><%= link_to task.name, task_path(task) %></td>

私のrspecファイルには参照がありました

    find(:xpath, "(//a[text()= 'Show'])[1]").click

次のようなものに変えたい

    find(:xpath, "(//a[text()= @task1.name])[1]").click

リスト内の正しいタスクが選択されるはずなので、それをフォローできます

    it { should have_content(@client.name) }
    it { should have_content(@task1.name) }
    it { should have_content(@task1.description) }

残念ながら、その @task.name を壊さないようにする方法がわかりません。

何か案は?

アップデート:

    Failure/Error: find(:xpath, "(//a[text()= @task1.name])[1]").click
    Capybara::ElementNotFound:
    Unable to find xpath "(//a[text()= @task1.name])[1]"
    # ./spec/requests/task_pages_spec.rb:123:in `block (4 levels) in <top (required)>'
4

2 に答える 2

0

この方法を試してくださいxpath。Ruby の文字列補間に失敗しました。

find(:xpath, "//a[text()= \"#{@task1.name}\"][1]").click

同様の例を作成しようとしました:-

require 'nokogiri'

doc = Nokogiri::HTML::Document.parse <<-eotl
<div>
  <p>foo</p>
  <p>foo</p>
  <p>bar</p>
</div>
eotl

doc.class # => Nokogiri::HTML::Document

class Person
  attr_accessor :name
end

ram = Person.new
ram.name="foo"
ram.name # => "foo"
doc.search("//div/p[text()= \"#{ram.name}\"]").to_a.size
# => 2
于 2013-09-02T18:11:27.160 に答える
0

これは思ったよりずっと簡単でした……。

    click_link @task1.name

私はそれを解決しようと何時間も費やしたので、隅に行って泣く必要があるかもしれないと思います...

于 2013-09-03T11:17:06.107 に答える