如何在ruby调试器中运行rspec expect语句?

2uluyalo  于 2023-10-17  发布在  Ruby
关注(0)|答案(1)|浏览(120)

每当我想写一个半复杂的期望时,我就不得不开始使用匹配器,看看如何将它们合并组合起来。例如,如果我想测试一个散列数组的所有散列都没有键,我的第一React可能是这样写:
expect(the_array).to all(not(have_key(:the_key)))
现在,这对我的代码不起作用,但这并不重要。我想问的是,我如何添加一个断点,并快速地多次修改期望?如果我只是在调试器上运行expect行,测试就会结束,这意味着我退出了调试会话。
是否有任何“干运行”模式的期望,所以我可以得到一个真/假,如果期望的工作,而不是实际退出测试?或者我可以自己运行expect语句的后半部分吗?
我试着在rubymine的调试器中运行expect行。
我希望这行代码在不退出调试模式的情况下执行。

gwo2fgha

gwo2fgha1#

RSpec::Support.with_failure_notifier有一个未记录的(内部)辅助方法。您可以使用它来避免在失败时引发错误。

RSpec::Support.with_failure_notifier(
  ->(failure, options) {
    puts failure, options
  }
) do
  expect(:foo).to(eq(:bar))
end

或在会话中永久覆盖失败通知程序

RSpec::Support.failure_notifier = ->(failure, options) {
  puts failure, options
}

现在,所有的期望都将打印出它们的失败,而不是抛出错误。

相关问题