Обнаружить сбой теста Rspec после каждого метода
Я пытаюсь запустить тест RSpec и хочу определить, не прошел ли тест в after
метод. У меня сейчас есть что-то вроде этого:
after(:each) do
cc = ConnectController.new()
cc.update(<TEST-SERVER-CONTROLLER>, <TC-RESULT-ID>, result?)
end
Как видите, result?
Функция - это то, что мне нужно заменить, чтобы определить, провалился ли тест или нет, а также получить информацию о том, что тест провалился.
3 ответа
В дополнение к ответу Даниэля, в Rspec3 был удален пример метода (см. Здесь для получения дополнительной информации).
Вам нужно будет сделать что-то вроде этого:
after(:each) do |example|
if example.exception
# ...
end
end
РЕДАКТИРОВАТЬ: этот ответ действителен только для RSpec 2. Для RSpec 3 см. Ответ geekazoid.
После каждого блока выполняется в контексте класса, который предоставляет 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|
if example_group.class.examples.select { |ex| ex.exception }.empty?
# runs only if there are no failures
do('something')
end
end