У меня есть класс с несколькими методами, например
class MyClass
def method_a(p)
method_b if p == 1
end
def method_b
some_more_stuff
end
end
И я могу sh проверить, используя RSpe c, что method_a
(иногда) вызывает method_b
.
it 'calls method_b if the passed parameter is 1' do
instance = spy('MyClass')
instance.method_a(1)
expect(instance).to have_received(:method_b)
end
К сожалению, поскольку шпионы RSpe c не передают вызовы методов тому, на кого они шпионят, spy.method_a
на самом деле не вызывает spy.method_b
. Я пытался играть с двойными и двойными экземплярами, но теперь ужасно смущен.
Как можно, чтобы двойной или шпионский объект RSpe c наблюдал за внутренними вызовами методов экземпляра, не заменяя их полностью? Я готов каким-то образом высмеять method_b
, но не могу понять, как это сделать правильно.