Ответ 1
В Capybara есть сокет has_no_content
. Таким образом, вы можете написать
Then /^I should not see "(.*?)"$/ do |arg1|
page.should have_no_content(arg1)
end
Используя Cucumber и Capybara, есть ли способ проверить, что строка не присутствует на странице?
Например, как бы я написал противоположное этому шагу:
Then /^I should see "(.*?)"$/ do |arg1|
page.should have_content(arg1)
end
Это проходит, если присутствует arg1
.
Как я могу написать шаг, который терпит неудачу, если найдено arg1
?
В Capybara есть сокет has_no_content
. Таким образом, вы можете написать
Then /^I should not see "(.*?)"$/ do |arg1|
page.should have_no_content(arg1)
end
В Rspec 3.4 в настоящее время (2016) это рекомендуемый способ проверить отсутствие содержимого:
expect(page).not_to have_content(arg1)
Вы также можете использовать should_not, если хотите, чтобы он читал немного лучше:
Then /^I should not see "(.*?)"$/ do |arg1|
page.should_not have_content(arg1)
end
Дополнительная информация: https://www.relishapp.com/rspec/rspec-expectations/docs
в настоящее время вы можете использовать:
Then /^I not see "(.*?)"$/ do |arg1|
expect(page).to have_no_content(arg1)
end
И если содержимое найдено на странице, ваш тест будет красным.
Ой, подождите, я понял это. Это работает:
Then /^I should see "(.*?)"$/ do |arg1|
page.has_content?(arg1) == false
end