【问题标题】:Why does this simple Rails unit test fail when the actual is the same as the expected?当实际与预期相同时,为什么这个简单的 Rails 单元测试会失败?
【发布时间】:2010-09-30 23:06:12
【问题描述】:

我有一个非常简单的单元测试。当预期与实际相同时,我不确定为什么它会失败!

这是我正在测试的方法:

def calibration_constant
  big_decimal = self.coefficient * (10**self.exponent)
  return big_decimal.to_f
end

注意,系数为“6.1”,指数为“1”

这里是相关的测试行:

assert_equal(61.0.to_f, calibrations[0].calibration_constant)

这是输出:

test_calibration_constants(PyranometerCalibrationTest): 预期但为 。

我一生都无法弄清楚为什么它会声称失败,但显然它们是平等的。有人对这种情况有任何意见吗?我所有其他类似的测试用例都可以正常工作。

我在带有 SQL Server 2005 的 Windows 上使用 Rails 2.1 (Ruby 1.8)。

提前感谢您的帮助。

【问题讨论】:

    标签: ruby-on-rails ruby unit-testing testing


    【解决方案1】:

    您正在比较两个浮点数。尝试使用具有非常低的 delta 值 (0.000001) 的 assert_in_delta 来查看您的问题是否只是精度错误。

    【讨论】:

    • 那行得通。我认为当 Rails 无法提醒开发人员可能是这种情况时,它会在输出中显示整个数字。感谢您的回复。
    • 您会认为至少在断言错误消息中会出现这种情况。我不能说它为什么不这样。
    • RSpec 有这种输出(只是比 Test::Unit 更好的另一种方式...)。
    猜你喜欢
    • 2013-09-07
    • 1970-01-01
    • 2012-08-17
    • 2010-09-26
    • 2021-07-29
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多