模拟动态对象(常量化)rspec
Mocking dynamic objects (constantize) rspec
我正在使用 Rails 4.2、rspec 3 和 ruby 2.1.2。
我要stub/mock动态对象,要测试的原代码是:
self.property_a.action_class_name.constantize.new.perform(payload)
我如何模拟该执行的结果?
谢谢,
晒.
根据您想要实现的目标,有多种选择。这是一个:
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 }
感谢您的回答,
但我用另一种方式解决了它:
expect_any_instance_of(ModuleName::ClassName).to receive(:perform).and_return({a: 1})
我正在使用 Rails 4.2、rspec 3 和 ruby 2.1.2。
我要stub/mock动态对象,要测试的原代码是:
self.property_a.action_class_name.constantize.new.perform(payload)
我如何模拟该执行的结果?
谢谢,
晒.
根据您想要实现的目标,有多种选择。这是一个:
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 }
感谢您的回答,
但我用另一种方式解决了它:
expect_any_instance_of(ModuleName::ClassName).to receive(:perform).and_return({a: 1})