Тестируемый класс
class Handler {
public function __invoke($params)
{
// У TemplateService тоже есть метод __invoke()
$templateService = new TemplateService();
$templateService($string);
}
}
я хочу замокать new TemplateService() делаю это так
class HandlerTest extends TestCase
{
protected function setUp(): void
{
parent::setUp();
$this->mockTemplateService();
}
public function testInvoke()
{
$handler = new Handler();
$handler->__invoke($params);
}
private function mockTemplateService()
{
$templateService = \Mockery::mock(TemplateService::class);
$templateService->shouldReceive('__invoke')
->with(__DIR__ .'templates/template.docx')
->andReturn(file_get_contents(__DIR__ . '../../data/template.docx'));
return $this->app->instance(TemplateService::class, $templateService);
}
}
Но почему то я не получаю то что я замокал. Тест стучится в оригинальный new TemplateService(). Буду благодарен за помощь.