我想要这个自定义步骤:
Then I should see the link 'foo'
和他的对立面:
But I should not see the link 'foo'
在页面中,我可以有类似的东西:
lorem foo bar
或者
lorem <a href=''>foo</a> bar
我需要测试“foo”何时是链接,何时不是。谢谢你。
我想要这个自定义步骤:
Then I should see the link 'foo'
和他的对立面:
But I should not see the link 'foo'
在页面中,我可以有类似的东西:
lorem foo bar
或者
lorem <a href=''>foo</a> bar
我需要测试“foo”何时是链接,何时不是。谢谢你。
尝试这样的事情(我还没有尝试过运行它,所以可能需要进行一些小的调整):
Then /^I should see the link "([^\"]*)"$/ do |linked_text|
# AFAIK this raises an exception if the link is not found
find_link(linked_text)
end
Then /^I should not see the link "([^\"]*)"$/ do |linked_text|
begin
find_link(linked_text)
raise "Oh no, #{linked_text} is a link!"
rescue
# cool, the text is not a link
end
end
已经有预定义的Webrat
步骤可以执行此操作(或至少非常相似)。从web_steps.rb
Then /^(?:|I )should see \/([^\/]*)\/ within "([^\"]*)"$/ do |regexp, selector|
within(selector) do |content|
regexp = Regexp.new(regexp)
if defined?(Spec::Rails::Matchers)
content.should contain(regexp)
else
assert_match(regexp, content)
end
end
end
和
Then /^(?:|I )should not see "([^\"]*)" within "([^\"]*)"$/ do |text, selector|
within(selector) do |content|
if defined?(Spec::Rails::Matchers)
content.should_not contain(text)
else
hc = Webrat::Matchers::HasContent.new(text)
assert !hc.matches?(content), hc.negative_failure_message
end
end
end
你可能会更幸运地使用 xpaths,你可以使用类似“//a/text()='foo'”的东西。你只需要为 webrat 启用 xpaths,我写了一篇关于在http://www.opsb.co.uk/?p=165的表格中使用 xpaths 做类似事情的博客文章,它包括为 webrat 启用 xpaths 所需的代码.
Then /^I should not see the link "([^\"]*)"$/ do |linked_text|
page.should_not have_css("a", :text => linked_text)
end
Then /^I should see the link "([^\"]*)"$/ do |linked_text|
page.should have_css("a", :text => linked_text)
end