irb 内から assert_equal を実行できますか? これは動作しません。
require 'test/unit'
assert_equal(5,5)
できますよ!
require 'test/unit'
extend Test::Unit::Assertions
assert_equal 5, 5 # <= nil
assert_equal 5, 6 # <= raises AssertionFailedError
何が起こっているのかというと、すべてのアサーションはTest :: Unit::Assertionsモジュールのメソッドです。そのモジュールをirb内から拡張すると、これらのメソッドをのクラスメソッドとして使用main
できるようになり、irbプロンプトから直接呼び出すことができます。(実際、extend SomeModule
任意のコンテキストで呼び出すと、そのモジュール内のメソッドは、同じコンテキストから呼び出すことがmain
できる場所に配置されます。デフォルトでは、たまたまその場所にあります。)
また、アサーションは内から実行されるように設計されているためTestCase
、セマンティクスは予想とは少し異なる場合があります。trueまたはfalseを返す代わりに、nilを返すか、エラーを発生させます。
あなたもすることができます
raise "Something's gone wrong" unless 5 == 5
テスト中のコードでは使用せずassert
、テストコードでのみ使用します。