Возвращаемое значение метода-заглушки не возвращается - PullRequest
1 голос
/ 11 марта 2011

Я заглушил метод и попросил его вернуть определенное значение. Однако при запуске модульных тестов реальный метод вызывается и возвращает сгенерированное реальное значение.

Т.е. я заглушил метод 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, что означает, что он выполняет фактический метод.

1 Ответ

2 голосов
/ 11 марта 2011

Вам нужно поставить заглушку для метода на экземплярах объекта, а не на классе.

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

Когда вы заглушаете сам класс, вы создаете метод get_requisition_number в классе Requisition, например, Requisition.get_requisition_number.

...