Как ожидать неудачный шаг и передать неудачу в огурце? - PullRequest
6 голосов
/ 01 февраля 2011

Мы хотим проверить наши определения шагов для огурца. Одна вещь, которую мы хотели бы иметь возможность проверить, это то, что тесты, которые мы ожидаем провалить, действительно терпят неудачу. Чтобы сделать это, мы хотели бы написать сценарии, которые, как мы знаем, потерпят неудачу, и добавить их в наш набор тестов, но пометить или иным образом обозначить их так, чтобы они «проходили» тогда и только в случае неудачи. Как можно подойти к этому?

Ответы [ 3 ]

0 голосов
/ 14 июня 2011

Вы передаете ключ -w команде Cucumber.

Он выведет нормальный формат, однако в конце он даст сводную информацию о том, все ли контрольные примеры не пройдены, и, если они пройдены, укажет, какие из них.

0 голосов
/ 13 декабря 2015

Это довольно сложный пример, но конечный результат - это действительно чистый метод, позволяющий ожидать, что сценарии с огурцами потерпят неудачу.Это всего лишь несколько небольших компонентов проекта, над которым я работаю.Причина создания пользователя с отсутствующими данными заключается в том, что в моей модели пользователя есть несколько валидаторов.Весь исходный код можно найти здесь .

features / step_definitions / before_step.rb

Before("~@fails") do
  def assert_cucumber(assersion, msg = "an error was thrown")
    assert(assersion == true, msg)
  end
end

Before("@fails") do
  def assert_cucumber(assersion, msg = "an error was thrown")
    assert(assersion == false, msg)
  end
end

features / step_definitions / user_step.rb

Given /^a user with$/ do |params|
  params = params.rows_hash
  unless User.find_by({username: params[:username]})
    assert_cucumber(User.new(params).save, "could not create user")
  end
end

функции / user.feature

Scenario: check if userers exsist
  Given a user with
    | username | johnsmith             |
    | email    | johnsmith@example.com |
    | password | password              |
  Then a user with username "johnsmith"

@fails
Scenario: create user with missing data
  Given a user with
    | username | johndoe |
  Then a user with username "johndoe"
0 голосов
/ 01 февраля 2011

Вы должны проверять отрицательное состояние.Неудачный шаг - это просто обратный шаг.Так что сделайте что-то вроде:

Then /i should not be true/ do
  some_value.should_not be_true
end

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

lambda do
  something_that_horks
end.should raise_error(Specific::Error)

. Вы просто сторнируете тесты в своих тестах, чтобы проверить отрицательные результаты, а не положительные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...