0

我有类似的东西:

value = nil

if some_condition
  value =my_object.do_stuff()
end

在我的测试中,我有以下几点:

MyObject.any_instance.should_receive(:do_stuff)

但是,我只想测试该方法是否被调用,并让它执行原始代码。我不想这样做:

MyObject.any_instance.should_receive(:do_stuff).and_return(:some_dummy_value)

有没有办法做到这一点?

4

2 回答 2

2

and_call_original方法:

MyObject.any_instance.should_receive(:do_stuff).and_call_original

请参阅https://github.com/rspec/rspec-mocks#delegating-to-the-original-implementation

于 2012-11-28T11:31:27.710 回答
0

我相信,由 FactoryGirl 创建对象比测试它更好。您可以阅读如何制作工厂等。例子:

FactoryGirl.define do
  factory :my_object do
   [*here is your attributes*]
  end
end

所以,在你创建了一个工厂之后,你应该在使用这个方法的地方创建测试并写下:

my_object = FactoryGirl.create(:my_object)
my_object.should_receive(:do_stuff)

在您的代码中,当您运行测试时,您将使用您的“my_object”执行“do_stuff”。

于 2012-11-28T11:29:34.307 回答