我想根据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