2011-12-23 33 views
1

所以我通過ruby koans教程學習Ruby。 在about_assert.rb腳本中,有一個關於assert_equal評論, 「主張平等的一些方法是比別人更好」關於Ruby 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 expected_value == actual_value

回答

6

我自己使用Rspec,所以我不知道。

但我猜想,與斷言失敗時得到的消息不同的是。 在assert_equal你應該得到像「預期值爲X,得到Y」。 而在另一種情況下,您會得到類似「斷言失敗」的內容。

你可以做一個快速測試並驗證或反駁我的觀點:-)

+2

如果我的記憶是正確的錯誤信息是(總是有幫助的)預計會是假的 – 2011-12-23 09:05:46

2

因爲assert_equal默認提供了一個更好的解釋消息。

下面是紅寶石1.9.3 MINITEST/unit.rb的代碼,所以你可以看到它使用==太:

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

除了已經提到的錯誤信息的原因。 assert_equal是不言自明的,assert foo == bar需要更多的認知開銷。