3

特定のhrefを持つリンクがページに存在することを確認したい。現在、「/ some-link-here」が表示されるはずですが、失敗しているようです。クリックせずにリンクが存在することを確認するにはどうすればよいですか+「/some-link-here」ページを表示する必要がありますか?

4

4 に答える 4

5

カスタムステップを追加する必要があります

Then /^"([^\"]*)" should link to "([^\"]*)"(?: within "([^\"]*)")$/ do |link_text, 
page_name, container|
  with_scope(container) do
    URI.parse(page.find_link(link_text)['href']).path.should == path_to(page_name)
  end
end

次のような手順を使用できますThen "User Login" should link to "the user_login page"。user_loginはルートの名前です

于 2010-12-12T08:18:03.870 に答える
0

私はjatinの答えを使用しましたが、別のスコープステップがあります。

When /^(.*) within ([^:]+)$/ do |step, parent|
  with_scope(parent) { When step }
end

Then /^"([^\"]*)" should link to "([^\"]*)"$/ do |link_text, page_name|
  URI.parse(page.find_link(link_text)['href']).path.should == path_to(page_name)
end

それから私は私のテストでこれを持っています:

step '"my foods" should link to "food_histories" within ".tabs"'

そしてこれは私の道にあります:

# note: lots not shown
def path_to(page_name)
  case page_name
  when /^food_histories$/
    food_histories_path
  end
end
于 2012-03-19T13:58:18.917 に答える
0

これは私が自分で行ったことであり、非常に単純ですが、URLをハードコーディングしていることを意味します。これは、テストが非常に脆弱になるため、正直に言うと理想的ではありません。特にサードパーティのURLを使用している場合は!

ただし、管理しているURLを使用していて、このテストを維持できる場合は、それを実行してください。

Then /^the link is "(.*?)"$/ do |arg1|
   page.should have_xpath("//a[@href='" + arg1 + "'][@target='_blank']")
end
于 2013-10-08T14:20:19.857 に答える
0

解決策を探していたとき、私は最初にここに着陸し、最新の答えを出すと思いました。has_link?それはあなたのカピバラ構文が何であるかに依存します、しかしあなたが書くことができるマッチャーを使ってhref = /some-link-hereそしてlink_text "Click Me"

expect(page).to have_link("Click Me", href: '/some-link-here')

于 2018-09-11T12:08:20.867 に答える