Невозможно определить, не прошел ли тест в хуке после - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь сделать некоторые дополнительные вещи, когда тест не пройден.

Это неудачный тест:

it 'fails' do
  expect(1213).to eq('123456')
end

Следующий код добавлен в spec_helper:

RSpec.configure do |config|
  config.after(:each) do |example|
    if example.exception
      puts 'Do something'
    end
  end

Результаты приводят к следующему выводу:

ожидается: "123456" получено: "1213" (по сравнению с использованием ==)

1 пример, 1 ошибка, 0 пройдено

Завершено за 2 секунды

Исключение в примере остается нулевым, я не понимаю, wy.Есть ли другой способ получить дополнительный код после неудачного теста?

Ответы [ 2 ]

1 голос
/ 14 марта 2019

Вот ответ (и идея решения тоже) https://github.com/rspec/rspec-core/issues/2011#issuecomment-114669886:

Во всяком случае, статус не устанавливается до ПОСЛЕ запуска прогонов после. Это сделано преднамеренно, потому что ловушка after является частью примера, и если в ловушке after происходит исключение, мы установим состояние примера на: fail. ловушки after отлично подходят для логики очистки / разрыва, но не предназначены для наблюдения за состоянием примеров. Вместо этого я рекомендую вам использовать форматтер для этого ...

0 голосов
/ 14 марта 2019

Код должен работать отлично, вы должны увидеть «Сделайте что-нибудь» прямо перед тем, как «F» будет напечатано на STDOUT, что-то вроде этого:

Randomized with seed 3598
Do something
F

Failures:

  1) Blah#blah fails
     Failure/Error: expect(1213).to eq('123456')

       expected: "123456"
            got: 1213

       (compared using ==)
     # ./spec/index_spec.rb:9:in `block (2 levels) in <top (required)>'

Finished in 0.01617 seconds (files took 0.09568 seconds to load)
1 example, 1 failure, 0 passed

Также обратите внимание, какую версию rspec вы используете, вашПротокол испытаний выглядит иначе, чем у меня.Мой на v3.8

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