2010-12-12 18 views
3

特定のhrefを持つリンクがページに存在することを確認します。私は現在、 "/ some-link-here"を見なければなりませんが、それは失敗するようです。リンクをクリックする必要なしに存在することを確認するにはどうすればよいですか+「/ some-link-here」ページにあるはずですか?キュウリ/カピバラでリンクが存在するかどうかを確認

答えて

5

あなたはカスタム・ステップを追加する必要がありますあなたはThen "User Login" should link to "the user_login page"のようなステップを使用することができます

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 

、USER_LOGINはあなたのルート

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"' 
01私のパスで

そして、この:

# note: lots not shown 
def path_to(page_name) 
    case page_name 
    when /^food_histories$/ 
    food_histories_path 
    end 
end 
0

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

あなたが管理しているこのURLを使用している場合は、このテストを維持してください。

Then /^the link is "(.*?)"$/ do |arg1| 
    page.should have_xpath("//a[@href='" + arg1 + "'][@target='_blank']") 
end 
関連する問題