2014-01-14 174 views
1

爲了辯論的緣故,假設我有一個Event模型,當Event第一次創建時需要創建一個Notification。例如在Rails中使用after_create回調。模型與另一個類的模型進行交互時,組織Rspec測試的最佳方法是什麼?

在哪個規範中應該放置回調測試?例如models/event_spec.rbmodels/notification_spec.rb?在其他地方作爲集成測試?

這是我目前的思維過程:

我的第一反應就是把這個在event_spec.rb

describe Event do 
    ... 
    describe 'callbacks' do 
    it 'should create a Notification when first saved' do 
     # assertions here 
    end 
    end 
end 

然而,這感覺就像我被打破的關注點分離。例如,我正在測試在Event規範中創建了Notifcation。那麼我想這可能是更合適的地方這些測試中notification_spec.rb

describe Notification do 
    ... 
    describe 'callbacks' do 
    it 'should be created when new an Event is first saved' do 
    # assertions here 
    end 
    end 
end 

但是,這感覺不對任何,因爲我們現在在Notification規範測試Event類的回調代碼。

有什麼想法?

回答

2

這屬於Event的規格。 Event負責創建Notification。此外,回調的代碼位於Event源文件中,因此尋找回調測試的用戶通常會在Event規範中找到它。

更重要的問題是:如何測試它? A「mockist」將完全隔離Notification型號:

it "should create a Notification" do 
    Notification.should_receive(:create) 
    event.save! 
end 

這確保了回調創建Notification,但不運行的創建方法。

+0

這就是我所傾向的。我喜歡使用'should_receive'! – Pete

相關問題