2012-05-24 79 views
2

我有這樣一個鏈接:如何測試黃瓜郵件鏈接?

< A HREF = 「電子郵件地址:<%= @email%>受=回答投訴&體= <%= @salutation%>」>答</a>

如何使用Cucumber/Capybara對其進行測試?我的意思是它已經不僅僅只是

更多,我應該能看到「答案」

+0

在你看來什麼是足夠的?該鏈接的href包含一個mailto正確的電子郵件? –

+0

其實我不太確定我應該測試什麼。我只是認爲'我應該看'還不夠。你怎麼看? –

+1

在我看來,測試href包含「mailto:#{email}」是好的。 –

回答

1

這聽起來像您擔心在mailto:鏈接@email@salutation值是否正確。

你可以做這樣的事情

page.should have_xpath("//a[contains(@href,email)]")) 
0

我結束了與黃瓜步:

Then /^I should have a mailto link with:$/ do |table| 
    mailto_link = '//a[@href="mailto:' + table.rows_hash['recipient'] + '?subject=' + table.rows_hash['subject'] + '&body=' + table.rows_hash['body'] + ' "]' 
    page.should have_xpath(mailto_link) 
end 
+0

您需要進行網址編碼。如果參數的順序不同,你應該使用XPATH contains() –

0

的除了彼得·Brudny與URL編碼,幷包含了如此秩序的參數都不會有問題(我從那裏取出了身體,但是如果你需要的話,你也許可以弄清楚它的身影。

Then(/^I should have a mailto link with:$/) do |table| 
    mailto_link = ("//a[contains(@href, \"mailto:#{table.rows_hash['recipient']}\")"\ 
    " and contains(@href, \""+ { 
    subject: table.rows_hash['subject'] 
    }.to_query + '")]').gsub('+', '%20') 
    page.should(have_xpath(mailto_link)) 
end 
0

Simila r接受的答案,但略有更新的例子。你可以這樣說:

expect(page).to have_xpath("//a[contains(@href,'mailto:[email protected]')]")