Предположим, у меня есть класс, который должен вызывать службу несколько раз с разными аргументами
class MyExecutor
def perform
targets.each do |target|
MyService.new(target).call
end
end
end
class MyService
def initialize(target)
@target = target
end
def call
@target.do_something
end
end
Предположим, я хочу написать тест для MyExecutor
, генерируя данные, чтобы у меня было как минимум 2целей, и я хочу проверить, что служба MyService
вызывается соответствующим образом для всех целей.
Когда у меня была только одна цель, я мог использовать expect_any_instance_of().to receive(:call)
, но тогда я не проверял конкретизацию с соответствующимиparams, а затем этот синтаксис устарел (см. комментарий здесь )
describe MyExecutor
context 'with one target'
it 'calls the MyService appropriately'
expect_any_instance_of(MyService).to receive(:call)
MyExecutor.perform
end
end
end
Предположим, у меня несколько целей, как я могу проверить, что MyService создается дважды, один раз скаждая соответствующая цель, и что в каждой из этих инстанцируемых служб метод call
вызывается надлежащим образом Каков надлежащий недревесный способ проверить это?
Неявный вопрос: (это правильный способ решения проблемы?)