2011-03-11 161 views
1

我已经存根方法并要求它返回一个特定的值。但是,在运行单元测试时,实际方法会被调用并返回实际值生成值。存根方法返回值没有被返回

即我存根get_requisition_number返回值1的方法,但在执行单元测试时,它返回值2011031100001

单元测试代码:

it "should have a unique requisition number when saved" do 
    Requisition.stub(:get_requisition_number).and_return("1") 
    req1 = Requisition.new 
    req1.save 
    req2 = Requisition.new 
    lambda { req2.save! }.should raise_error(ActiveRecord::ActiveRecordError) 
end 

当保存方法get_requisition_number被称为方法被执行。我从存根中假设它应该返回1。但是它会返回一个日期特定值,如2011031100001,这意味着它正在运行实际的方法。

回答

2

您需要在对象实例上存根方法,而不是类。

req1 = Requisition.new 
req1.stub(:get_requisition_number).and_return("1") 
# same for req2 

当你存根类本身,您创建征用类,例如get_requisition_number方法Requisition.get_requisition_number

+0

太棒了!感谢您的帮助 – James 2011-03-11 09:55:29

+0

+1。谢谢你的回答,我对所有的事情都还很陌生,这个问题让我感到莫名其妙。 – StevenMcD 2011-03-11 10:48:17