В ruby вы можете выполнить assert equal и другие утверждения, находясь в irb?
можете ли вы выполнить assert_equal из irb? Это не работает.
require 'test/unit'
assert_equal(5,5)
3 ответов
конечно, вы можете!
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
в тестируемом коде я использую его только в тестовом коде.