Это должно работать для вас, если я правильно понимаю:
it "should call #method_b when I call #method_that_calls_b" do
expect(my_class).to receive(:method_b).with(anything) #anything means I don't care explictly what is sent in just that it was called
my_class.method_that_calls_b
end
Это будет проверить, что на самом деле method_that_calls_b
называют method_b
с любыми аргументами. Если вы знаете, какие аргументы должны получать, то замените что-нибудь тем, с чем вы ожидаете, с которым он будет вызван. например
it "should call #method_b with 'hello'" do
expect(my_class).to receive(:method_b).with('hello')
my_class.method_b('goodbye') #this will fail
my_class.method_b('hello') #this will pass without the above line
end
Нет. Я не знаю. Но вы можете показать нам свой код, чтобы мы могли предложить вас там, чтобы изменить метод, который вы написали, предложив некоторые изменения и упростите ваш модульный тест. –
@ArupRakshit не знает, имеет ли это значение для вас, но это очень возможно. См. Мой ответ ниже для тестирования такой вещи. – engineersmnky
@engin это не имеет смысла тестировать вызов метода в списке аргументов. –