1

以下工作正常:

Then /^I should see a button called "([^\"]*)"$/ do |name|
  response.should have_selector("li") do |li|
    li.should have_selector("a") do |a|
      a.should contain(name)
    end
  end
end

现在我需要用这样的步骤来补充它:

Then /^I should not see a button called "([^\"]*)"$/ do |name|
   [snip...]
end

标准的“而且我不应该看到”并不令人满意,因为它会在页面的任何地方找到目标短语——而不仅仅是在按钮内。我特别需要检查是否不存在带有目标文本的按钮。

我的第一直觉是尝试这样的事情:

Then /^I should see a button called "([^\"]*)"$/ do |name|
  response.should have_selector("li") do |li|
    li.should have_selector("a") do |a|
      a.should_not contain(name)
    end
  end
end

但是当然,只要页面上有任何不包含目标文本的按钮,即使还有一个或多个按钮确实包含目标文本,这也会过去。

你的意见?

非常感谢,

史蒂文。

4

3 回答 3

2

您可以使用assert_not_contain(也许not_contain但我怀疑它,因为它不在rdoc中)。

a.should assert_not_contain(name)
于 2009-10-27T11:15:20.513 回答
1

问题解决了!我给每个控件一个“控件”类,然后写了这个步骤定义:

Then /^I should not see a control called "([^\"]*)"$/ do |name|
  response.should have_selector("a.control", :content => name, :count
=> 0)
end

当然,这假设我很高兴给他们所有的“控制”类......

s。

于 2009-10-29T12:22:57.323 回答
0

您的按钮实际上是链接吗?对于按钮(有提交值),我使用:

assert_have_selector "input[type=submit][value=\"#{text}\"]"

和:

assert_have_no_selector "input[type=submit][value=\"#{text}\"]"

hth。

于 2009-10-27T11:50:15.050 回答