2010-10-03 33 views

cevap

26

Elbette yapabilirsin! Neler oluyor

require 'test/unit' 
extend Test::Unit::Assertions 
assert_equal 5, 5    # <= nil 
assert_equal 5, 6    # <= raises AssertionFailedError 

tüm iddiaların Testi :: Birimi :: İddialar modülünde yöntemler olmasıdır. Bu modülün irb içinden genişletilmesi, bu yöntemleri main'da sınıf yöntemleri olarak kullanılabilir hale getirir, bu da bunları doğrudan irb komutunuzdan çağırmanızı sağlar. (Gerçekten, herhangi bir bağlamda extend SomeModule'u çağırmak, bu bağlamdaki yöntemleri aynı bağlamdan arayabileceğiniz bir yere koyacaktır - main sadece varsayılan olarak nerede olduğunuza göre olur.)

Ayrıca, iddialar Bir TestCase içinden koşmak, semantik beklenenden biraz farklı olabilir: true veya false döndürmek yerine, nil döndürür veya bir hata oluşturur.

+1

Bu mükemmeldi. Hızlı cevabınız için teşekkür ederim. Sadece uzantı ifadesinden sonra alıntıları kaldırmak için gerekli. – Chris

+0

Whoops, test etmediğim şey bu. :-) Sabit ve biraz daha fazla açıklama (sizin veya gelecekteki izleyiciler için) doldurulur. –

+0

IRB'de true/false döndürmesini istiyorsanız, sadece == kullanın. 5 == 5 # => true 5 == 6 # => false –

4

Ayrıca ben test edilmekte olan kodunda assert kullanmayın

raise "Something's gone wrong" unless 5 == 5 

yapabilirsiniz, ben sadece deneme kodunda kullanın.

5

Doğru cevabı,

require 'test/unit/assertions' 

include Test::Unit::Assertions 
+0

Vay. harika!! internet üzerinden arama yaptıktan sonra. Bu çözümü buldum. @ Nilesh – Aravin

İlgili konular