rspec-如何向发生故障/错误的地方添加更多信息

时间:2019-04-24 13:10:58

标签: ruby rspec

如果测试失败,我想从测试中输出一堆信息。

当我发布信息时,它出现在rspec输出的Failures:部分的之前处,而不是特定的规范失败信息所在的位置(行号等)

rspec中是否有一种方法可以使规范显示故障本身而不是单独显示信息?

我以为mybe是个钩子,但是...

  

警告:钩子不与示例共享状态的方式   之前和之后的钩子。这意味着您无法共享实例   围绕钩子和示例之间的变量.```

1 个答案:

答案 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" }