如果测试失败,我想从测试中输出一堆信息。
当我发布信息时,它出现在rspec输出的Failures:
部分的之前处,而不是特定的规范失败信息所在的位置(行号等)
rspec中是否有一种方法可以使规范显示故障本身而不是单独显示信息?
我以为mybe是个钩子,但是...
警告:钩子不与示例共享状态的方式 之前和之后的钩子。这意味着您无法共享实例 围绕钩子和示例之间的变量.```
答案 0 :(得分:1)
您可以在测试中使用lambda:
expect(page).to have_text("Doesn't exist"), lambda { "This failed for all sorts of reasons, let me list them out here: #{detailed info}." }
将为您提供如下输出:
Failures:
1) Blah blah blah
Failure/Error: expect(page).to have_text("Doesn't exist"), lambda { "This failed for all sorts of reasons, let me list them out here: nil." }
This failed for all sorts of reasons, let me list them.
# ./spec/features/search_results_spec.rb:19:in `block (2 levels) in <top (required)>'
如果您有类似expect(x).to eq y.count
的代码,可能会有些棘手,因为仅对lambda进行附加操作会给出2个参数,但预期值为0..1。避开这种使用格式,例如
expect(x).to (eq y.count), lambda { "message" }