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

执行 save 方法时调用方法 get_requisition_number。我假设它应该从存根返回1。但是,它返回一个特定于日期的值,例如2011031100001,这意味着它正在运行实际方法。

4

1 回答 1

2

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

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

当您对类本身存根时,您会get_requisition_number在 Requisition 类上创建一个方法,例如Requisition.get_requisition_number.

于 2011-03-11T08:23:59.507 回答