Огурец/Капибара: проверьте, что страница НЕ содержит контент?

Используя Cucumber и Capybara, есть ли способ проверить, что строка не присутствует на странице?

Например, как бы я написал противоположное этому шагу:

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

Это проходит, если присутствует arg1.

Как я могу написать шаг, который терпит неудачу, если найдено arg1?

Ответы

Ответ 2

В Rspec 3.4 в настоящее время (2016) это рекомендуемый способ проверить отсутствие содержимого:

expect(page).not_to have_content(arg1)

Ответ 3

Вы также можете использовать should_not, если хотите, чтобы он читал немного лучше:

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

Дополнительная информация: https://www.relishapp.com/rspec/rspec-expectations/docs

Ответ 4

в настоящее время вы можете использовать:

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

И если содержимое найдено на странице, ваш тест будет красным.

Ответ 5

Ой, подождите, я понял это. Это работает:

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