我正在使用Rails 4.2,rspec 3和ruby 2.1.2。
我想要存根/模拟动态对象,要测试的原始代码是:
self.property_a.action_class_name.constantize.new.perform(payload)
我如何模拟该表演的结果?
谢谢,
晒。
答案 0 :(得分:2)
根据您想要达到的目标,有很多选择。这是一个:
mock_class = Class.new do
def perform(payload)
:foo
end
end
allow(<object>).to receive_message_chain(:property_a, :action_class_name, :constantize) { mock_class }
答案 1 :(得分:0)
感谢您的回答,
但我用另一种方式解决了它:
expect_any_instance_of(ModuleName::ClassName).to receive(:perform).and_return({a: 1})