每当我想写一个半复杂的期望时,我就开始尝试使用匹配器,看看如何将它们结合起来。例如,如果我想测试哈希数组的所有哈希都没有 key ,我的第一直觉可能是编写如下内容:
expect(the_array).to all(not(have_key(:the_key)))
现在,这对我的代码不起作用,但这并不重要。我想问的是,如何添加断点,并快速迭代多次修改期望?如果我只是在调试器上运行 Expect 行,测试就会结束,这意味着我退出调试 session 。
expect 是否有任何“空运行”模式,这样我就可以在expect 工作时得到 true/false,而不需要实际退出测试?或者我可以单独运行 Expect 语句的后半部分吗?
我尝试在 rubymine 的调试器中运行 Expect 行。
我期望该行在不退出 Debug模式的情况下执行。
最佳答案
RSpec::Support.with_failure_notifier
有一个未记录的(内部)辅助方法。您可以使用它来避免在失败时引发错误。
RSpec::Support.with_failure_notifier(
->(failure, options) {
puts failure, options
}
) do
expect(:foo).to(eq(:bar))
end
或者在 session 中永久覆盖失败通知程序
RSpec::Support.failure_notifier = ->(failure, options) {
puts failure, options
}
现在所有的期望都只会打印出他们的失败而不是抛出错误。
关于ruby - 如何在 ruby 调试器中运行 rspec Expect 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76957606/