[英]Ruby on Rails, uninitialized constant Test::Unit::TestCase::Assertions (NameError)
[英]How to extend Ruby Test::Unit assertions to include assert_false?
顯然,Test :: Unit中沒有assert_false
。 如何通過擴展斷言並添加文件config/initializers/assertions_helper.rb
添加它?
這是最好的方法嗎? 我不想修改test/unit/assertions.rb
。
順便說一句,我不認為這是多余的。 我使用的是assert_equal false, something_to_evaluate
。 這種方法的問題在於很容易意外地使用assert false, something_to_evaluate
。 這將始終失敗,不會拋出錯誤或警告,並邀請錯誤進入測試。
如果你正在使用MiniTest(在Ruby 1.9+中替換了Test :: Unit),那么你可以使用refute
方法,它是assert
的反轉方法。
我個人認為名稱assert_false
比refute
更好,因為它與所有其他斷言一致,並且它通常也更符合語義(類似於使用if !condition
而不是unless
)。
如果您有同樣的想法並想要assert_false
,請將其添加到test/test_helper.rb
:
class ActiveSupport::TestCase
...
def assert_false(test, message="Expected: false. Actual: #{test}.")
assert_equal false, test, message
end
end
編輯:注意assert !test
(在其他地方建議)如果test
為零(!nil為真,我們可能希望assert_false(nil)
失敗)將無效。 所以這是對false
的直接比較。
Rails 4有assert_not
可以做你想要的。
test "requires valid url" do
@mymodel.url = "bogus!"
assert_not @mymodel.valid?
end
只需在你聲稱的內容中添加一聲巨響:
assert !(something_false)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.