未返回存根方法返回值

时间:2011-03-11 06:19:43

标签: ruby unit-testing rspec stub stubbing

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

即我将方法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,这意味着它正在运行实际的方法。

1 个答案:

答案 0 :(得分:2)

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

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

当你自己存根时,你可以在Requisition类上创建一个get_requisition_number方法,例如Requisition.get_requisition_number