Ответ 1
В дополнение к ответу Дэниела, в Rspec3 был удален пример метода (см. Здесь для получения дополнительной информации).
Вам нужно будет сделать что-то вроде этого:
after(:each) do |example|
if example.exception
# ...
end
end
Я пытаюсь запустить RSpec-тест, и я хочу определить, не прошел ли тест в методе after
. У меня есть что-то вроде этого прямо сейчас:
after(:each) do
cc = ConnectController.new()
cc.update(<TEST-SERVER-CONTROLLER>, <TC-RESULT-ID>, result?)
end
Как вы можете видеть, функция result?
- это то, что мне нужно заменить, чтобы обнаружить, если тест терпит неудачу или нет, а также получить информацию о провале теста.
В дополнение к ответу Дэниела, в Rspec3 был удален пример метода (см. Здесь для получения дополнительной информации).
Вам нужно будет сделать что-то вроде этого:
after(:each) do |example|
if example.exception
# ...
end
end
EDIT: этот ответ применим только для RSpec 2. для RSpec 3 см. гиказоидный ответ.
После каждого блока выполняется в контексте класса, который предоставляет example
, и вы можете обнаружить сбои, проверив метод exception
на example
:
after(:each) do
if example.exception != nil
# Failure only code goes here
end
end
Я искал, как проверить, если успех для всех примеров в группе в блоке after(:context)
/after(:all)
. Вот что я придумала:
after(:all) do |example_group|
all_groups = example_group.class.descendants
failed_examples = all_groups.map(&:examples).flatten.select(&:exception)
if failed_examples.empty?
# runs only if there are no failures
do('something')
end
end