ruby - 比较 float 的随机 RSpec 失败(Eq 匹配器)

标签 ruby rspec matcher

我什至不确定从哪里开始。抱歉,如果这是重复的,但我什至不知道要搜索什么或这个特定问题的名称。

我的 RSpec 套件中的测试会随机地(但不是经常)失败,我会收到如下错误:

expected: 0.69
     got: 0.69 (0.69e0)

(compared using ==)

RSpec 代码正在比较来自两个不同模型的两个 float ,当规范完成时,它们应该是相同的值。有没有办法在命令控制台中重现它?我已经尝试了显而易见的东西(如下),但老实说我不知所措。如果我重新运行测试十几次,我无法重现问题。

0.69 == 0.69e0 => true
0.69 == 0.69 => true
6.9e-1 == 0.69 => true

最佳答案

测试 float 时,我推荐你使用RSpec的be_within matcher .

例子:

expect(my_float).to be_within(0.01).of(0.69)

您应该选择对您的用例有意义的解决方案。 (0.001、0.0001 等)

关于ruby - 比较 float 的随机 RSpec 失败(Eq 匹配器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55169708/

相关文章:

windows - 为什么当我运行 ruby​​.exe/IRB 时,我得到的只是一个空白的 DOS shell?

ruby - 在 Ruby 中使用线程进行指标收集会产生大量开销吗?

ruby-on-rails - rails4 中的未定义方法 `user?'

ruby - Rspec 和 Capybara 未初始化常量

ruby-on-rails - 追踪导致 rspec 测试缓慢的原因

ruby - PatientsController#index 错误中的 Rails 5.2 ActionController::UnknownFormat

ruby-on-rails - 使用 Capybara 检查复选框

java - 在文本文件上多次匹配模式?

java - 如何从 Java 中的 Matcher 获取多个正则表达式组?

java - 比较 Set 中项目的 Mockito 匹配器,而不是 Set 引用本身