测试失败时,我会尝试做一些额外的事情。
这是测试失败:
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秒内完成
示例异常保持为零,我不明白。测试失败后,还有另一种方法来获得额外的代码吗?
答案 0 :(得分:1)
这是答案(也是解决方案的主意)https://github.com/rspec/rspec-core/issues/2011#issuecomment-114669886:
无论如何,直到后钩运行之后才设置状态。这是故意的,因为after钩子本身就是示例的一部分,如果after钩子中发生异常,我们会将示例的状态设置为:failed。 after挂钩对于清理/拆卸逻辑非常有用,但并非旨在观察示例的状态。相反,我建议您为此使用格式化程序...
答案 1 :(得分:0)
代码应该可以正常工作,您应该在STDOUT上打印“ F”之前看到“执行某些操作”,如下所示:
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版