Конечно, вы можете!
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 или вызывает ошибку.