23

使用 Cucumber 和 Capybara,有没有办法验证页面上不存在字符串?

例如,我将如何编写与此步骤相反的内容:

Then /^I should see "(.*?)"$/ do |arg1|
  page.should have_content(arg1)
end

如果arg1存在,则通过。

如果找到,我将如何编写失败arg1的步骤?

4

5 回答 5

34

http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Matchers#has_no_text%3F-instance_method

Capybara有一个has_no_content匹配器。所以你可以写

  Then /^I should not see "(.*?)"$/ do |arg1|
    page.should have_no_content(arg1)
  end
于 2012-08-16T03:20:02.920 回答
16

在当前的 Rspec 3.4(2016)中,这是测试没有内容的推荐方法:

expect(page).not_to have_content(arg1)
于 2016-02-25T23:43:45.480 回答
8

如果你想让它读得更好一点,你也可以使用should_not :

Then /^I should not see "(.*?)"$/ do |arg1|
  page.should_not have_content(arg1)
end

更多信息:https ://www.relishapp.com/rspec/rspec-expectations/docs

于 2012-10-26T18:34:06.543 回答
4

目前,您可以使用:

Then /^I not see "(.*?)"$/ do |arg1|
  expect(page).to have_no_content(arg1)
end

如果在页面中找到内容,则您的测试是红色的

于 2014-12-19T13:44:30.857 回答
-4

哦,等等,我想通了。这有效:

Then /^I should see "(.*?)"$/ do |arg1|
  page.has_content?(arg1) == false
end
于 2012-08-16T02:59:25.013 回答