2011-03-11 73 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