Pouvez-vous exécuter assert_equal depuis irb? Cela ne fonctionne pas.Dans ruby, pouvez-vous exécuter assert_equal et d'autres s'affirme dans irb?
require 'test/unit'
assert_equal(5,5)
Pouvez-vous exécuter assert_equal depuis irb? Cela ne fonctionne pas.Dans ruby, pouvez-vous exécuter assert_equal et d'autres s'affirme dans irb?
require 'test/unit'
assert_equal(5,5)
Bien sûr vous pouvez!
require 'test/unit'
extend Test::Unit::Assertions
assert_equal 5, 5 # <= nil
assert_equal 5, 6 # <= raises AssertionFailedError
Ce qui se passe est que toutes les assertions sont des méthodes dans le module Test :: Unit :: Assertions. L'extension de ce module depuis l'intérieur d'irb rend ces méthodes disponibles en tant que méthodes de classe sur main
, ce qui vous permet de les appeler directement à partir de votre invite irb. (Vraiment, appeler extend SomeModule
dans n'importe quel contexte mettra les méthodes dans ce module quelque part vous pouvez les appeler du même contexte - main
se trouve justement être où vous êtes par défaut.)
De plus, puisque les assertions ont été conçues pour être Exécuter à partir de TestCase
, la sémantique peut être un peu différente de celle attendue: au lieu de retourner vrai ou faux, il renvoie nil ou déclenche une erreur.
Vous pouvez également faire
raise "Something's gone wrong" unless 5 == 5
Je n'utilise assert
dans le code qui est en cours de test, je ne l'utilise que dans le code de test.
La bonne réponse est,
require 'test/unit/assertions'
include Test::Unit::Assertions
Wow. génial!! après avoir cherché partout sur internet. J'ai trouvé cette solution. @ Nilesh – Aravin
C'était parfait. Merci pour la réponse rapide. Juste nécessaire pour supprimer les citations après l'instruction extend. – Chris
Oups, c'est ce que je reçois pour ne pas le tester. :-) Correction et rempli un peu plus d'explications (pour vous ou les futurs spectateurs). –
Si vous voulez renvoyer true/false dans IRB, utilisez plutôt ==. 5 == 5 # => vrai 5 == 6 # => faux –