我有类似的东西:
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)
有没有办法做到这一点?
答案 0 :(得分: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
答案 1 :(得分:0)
我相信,最好通过FactoryGirl创建对象,而不是测试它。您可以阅读如何制作factories等内容。 例如:
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”。