2015-01-22 3 views
0

Я использую Rails 4.2, rspec 3 и ruby ​​2.1.2.Mocking dynamic objects (constantize) rspec

Я хочу незавершенное/макет динамического объекта, исходный код, чтобы проверить это:

self.property_a.action_class_name.constantize.new.perform(payload) 

Как я издеваться результатом того, что выполнить?

Thanks,

Shai.

ответ

0

Спасибо за ответ,

Но я решил по-другому:

expect_any_instance_of(ModuleName::ClassName).to receive(:perform).and_return({a: 1}) 
+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 }