- Dummy - заглушка, передается но не используется
- Stub - возвращает предопределенные данные
- Mock - проверяет, что определенные методы были вызваны (верификация поведения)
- Spy - записывает вызовы для последующей проверки
- Fake - рабочая реализация, упрощенная для тестов (in-memory repository)
// Stub
$repo = $this->createStub(UserRepository::class);
$repo->method('find')->willReturn(new User('John'));
// Mock
$mailer = $this->createMock(Mailer::class);
$mailer->expects($this->once())
->method('send')
->with('john@mail.com', $this->anything());