2011-09-19 22 views
5

İki modelim var Foo and Bar. Foo'nun, Foo'nun bir örneğinin kaydedilmesinden sonra çağrılan ask_bar_to_do_something adlı bir yöntemi vardır. Bu yöntem bu Foo örneğinin durumunu değiştirmez.Nesne üzerinde bir yöntem çağrıldığında nasıl test edilir - Raylar RSpec

Bu yöntemi 1 değerini döndürmeyi ve Foo nesnesi oluşturan ve dönüş değerini kontrol eden bir lambda bloğu oluşturmayı düşünüyorum. Bunu yapmanın daha iyi bir yolu var mı?

Teşekkür ederiz.

cevap

13

Nesneye neden alamıyorsunuz ve yöntem beklemiyorsunuz?

class Foo < ActiveRecord::Base 
    after_create :ask_bar_to_do_something 

    def ask_bar_to_do_something 
    #blah blah blah 
    end 
end 

Eğer nesne Else

Foo.any_instance.should_receive(:ask_bar_to_do_something) 
Factory(:foo) 

Dexter

foo = Foo.new(:attr1 => 'value1', :attr2 => 'value2') 
foo.should_receive(:ask_bar_to_do_something) 
foo.save 
+0

Çok teşekkürler oluşturmak için fabrika kullanıyorsanız. Tam olarak aradığım şey bu. – AdamNYC

+0

Bu 'olmamalı' sözdizimi mi? Varsa, herkes beklenti sözdizimini paylaşabilir mi? – ianstarz

+3

@ianstarz 'expect_any_instance_of (Foo) .to almak için (: ask_bar_do_do_something)' – rxgx

İlgili konular