【问题标题】:Regarding Ruby assert_equal关于 Ruby assert_equal
【发布时间】:2011-12-23 03:36:19
【问题描述】:

所以我正在通过 ruby​​ koans 教程学习 Ruby。 在 about_assert.rb 脚本中,有一条关于 assert_equal 的注释, “主张平等的某些方式比其他方式更好”

这里是代码

def test_a_better_way_of_asserting_equality
    expected_value = 2
    actual_value = 1 + 1

    assert_equal expected_value, actual_value
end

我的问题是,为什么 assert_equal expected_value, actual_valueassert expected_value == actual_value

【问题讨论】:

    标签: ruby testunit


    【解决方案1】:

    我自己使用 Rspec,所以我不确定。

    但我想不同之处在于断言失败时收到的消息。 在assert_equal 中,您应该得到类似“预期值为 X,得到 Y”的内容。 而在另一种情况下,您将得到类似“断言失败”的信息。

    您可以快速测试并验证或反驳我的观点:-)

    【讨论】:

    • 如果我的记忆是正确的,错误信息是(总是有帮助的)预期的真为假
    【解决方案2】:

    因为 assert_equal 默认提供了更好的解释信息。

    这是来自 Ruby 1.9.3 minitest/unit.rb 的代码,因此您可以看到它也在使用 ==:

    def assert_equal exp, act, msg = nil
      msg = message(msg, "") { diff exp, act }
      assert(exp == act, msg)
    end
    

    【讨论】:

      【解决方案3】:

      除了已经说明的错误消息原因。 assert_equal 是不言自明的,assert foo == bar 需要更多的认知开销。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-16
        • 1970-01-01
        • 2018-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多