2011-09-13 80 views
2

我該如何編寫這個文件,以便它在沒有硬編碼的情況下通過1。雞和雞蛋。RSpec should_receive宏,其中包含需要測試的內容的ID

@sender = Factory(:user) 
@receiver = Factory(:user) 

mailer = double 
mailer.should_receive(:deliver) 
Mailer.should_receive(:email).with(1, @sender.id, @receiver.id).and_return(mailer) 

# This will create an object with id #1 to make this test pass 
@object = Object.create(:sender => @sender, :receiver => @receiver) 
+0

我覺得rspec的使用應該-的匹配,以驗證「should_receive」預期參數,否則東西像什麼()不能工作?我的想法是編寫一個自己的參數匹配器,它匹配數據庫中的第一個id。 –

+1

雖然這仍然是一個抽象的問題,但我在我的具體問題中解決了這個問題。我在'test.rb'中調用了交付,並使用'ActionMailer :: Base.deliveries'來測試郵件。 – maletor

回答

4

這個怎麼樣?

Mailer.should_receive(:email).with(an_instance_of(Fixnum), @sender.id, @receiver.id).and_return(mailer) 
相關問題