ruby - 如何在 ruby​​ 调试器中运行 rspec Expect 语句?

标签 ruby debugging rspec rubymine

每当我想写一个半复杂的期望时,我就开始尝试使用匹配器,看看如何将它们结合起来。例如,如果我想测试哈希数组的所有哈希都没有 key ,我的第一直觉可能是编写如下内容:

expect(the_array).to all(not(have_key(:the_key)))

现在,这对我的代码不起作用,但这并不重要。我想问的是,如何添加断点,并快速迭代多次修改期望?如果我只是在调试器上运行 Expect 行,测试就会结束,这意味着我退出调试 session 。

expect 是否有任何“空运行”模式,这样我就可以在expect 工作时得到 true/false,而不需要实际退出测试?或者我可以单独运行 Expect 语句的后半部分吗?

我尝试在 ruby​​mine 的调试器中运行 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/

相关文章:

ruby - `TRUE` 和 `true` 之间有区别吗?

ruby-on-rails - 如何为我的 ActiveRecord 模型编写带有参数的自定义验证方法?

ruby - 使用非单词字符正则表达式拆分字符串时的奇怪行为

visual-studio - 调试时,调试按钮移至 Visual Studio 中的左侧

ruby-on-rails - Rails Rspec 错误 - 未定义的方法 `visit'

ruby-on-rails - cucumber 与 RSpec

ruby - Kaminari 和 Capybara 冲突

Ruby:如何处理带有 "bad commas"的 CSV 文件?

perl - 在调试器中设置任意断点

c++ - 在 Linux 上调试时如何停止占用所有可用内存的程序?