我有一个方法,并要求它返回一个特定的值。但是,在运行单元测试时,将调用实际方法并返回实际值生成值。
即我将方法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
执行save方法时调用方法get_requisition_number。我假设存根应该返回1
。但是它返回一个特定于日期的值2011031100001
,这意味着它正在运行实际的方法。
答案 0 :(得分:2)
您需要在对象实例上存根方法,而不是类。
req1 = Requisition.new
req1.stub(:get_requisition_number).and_return("1")
# same for req2
当你自己存根时,你可以在Requisition类上创建一个get_requisition_number
方法,例如Requisition.get_requisition_number
。