Разница между mock и spy в контексте тестирования заключается в следующем:
Mock создаёт полный макет или поддельный объект. 2 Если не определять поведение методов такого объекта, они будут возвращать значения по умолчанию. 1
Spy позволяет «шпионить» за реальными объектами. 1 По умолчанию будет исполняться оригинальное поведение методов объекта. 1 Но как и в случае с Mock-объектами, их поведение можно переопределить. 1
Когда следует использовать mock или spy: