我想根據http://railscasts.com/episodes/121-non-active-record-model在我的Ruby on Rails應用程序中創建一個非ActiveRecord模型。儘管如此,我仍然很難測試它。用Rspec在Rails中嘲諷非數據庫支持的模型
我在我的app/models/sms.rb
文件中有以下類。
class Sms
def initialize
# Do stuff here
end
def deliver
# Do some stuff here
end
end
我無法在我的Sms類上模擬傳遞方法。
it 'should do someting' do
@sms = mock(Sms)
@sms.should_receive(:deliver).and_return(true)
post :create, :user_id => @user.id
flash[:notice].should == "SMS sent successfully."
response.should redirect_to(some_url)
end
在我的控制器代碼中,我確實有一行表示@sms.deliver
。然而上面給出了以下錯誤:
Failure/Error: @sms.should_receive(:deliver).and_return(true)
(Mock Sms).deliver(any args)
expected: 1 time
received: 0 times
任何指針?
謝謝Andy的迴應。 'any_instance'方法在Rspec 2.6及更高版本中可用。我正在使用2.0.0。我能夠通過調整我的測試代碼和關於#RubyOnRails的一些小討論來解決這個問題。但是,上面也解決了這個問題,但只在Rspec> = 2.6。 – Waseem 2011-05-30 13:31:46