Огурец, рельсы: has_content? тест пройден, хотя строки там нет - PullRequest
1 голос
/ 30 октября 2019

Сценарий:

    Scenario: View welcome page
    Given I am on the home page
    Then I should see 'Welcome'

И определение шага:

Then("I should see {string}") do |string|
  page.has_content?(string)
end

Проверка проходит независимо от того, присутствует ли слово «приветствие» на главной странице или нет. Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 30 октября 2019

Шаг потерпит неудачу только в том случае, если он сгенерирует исключение. Согласно соглашению об именах, метод has_content? возвращает значение false, если содержимое отсутствует на странице, и, следовательно, не выдает исключение. Это заставит ваш шаг «пройти», когда вы намереваетесь потерпеть неудачу.

Вам нужно сделать утверждение с какой-то библиотекой модульного тестирования (мой Ruby немного ржавый)

Then("I should see {string}") do |string|
  page.has_content?(string).should_be true
end

Вам понадобится что-то вроде RSpec, чтобы получить доступ к библиотеке, позволяющей делать утверждения.

0 голосов
/ 30 октября 2019

Выполнение этого способа, показанного в другом ответе, будет работать, но не даст полезных сообщений об ошибках. Вместо этого вы хотите

Для RSpec

expect(page).to have_content(string)

Для мини-теста

assert_content(string)

Для других

page.assert_content(string)

Обратите внимание, что assert_content / assert_text и have_content /have_text - псевдонимы друг друга, поэтому используйте тот, который читается лучше.

...