так:
class MyClass
{
//...
public function __construct(string $uuid)
{
//...
$this->logger = Log::build([
'driver' => 'daily',
'days' => 1,
'path' => storage_path('logs/something/history.log'),
]);
//...
}
//...
}
Теперь я пишу тест для MyClass и хочу понять логирует ли он что надо куда надо.
Мок Log::shouldReceive('info')... шлёт хером, потому что перед моими $myclass->logger->info() стреляет какой-то error().
Storage::fake() вроде должен помочь (возвращает storage/framework/testing/disks/testing), но storage_path() в конструкторе MyClass возвращает storage/logs/something/history.log. Плюс странность в том, что в итоге ничего не пишется ни туда, ни сюда.
Есть кто побеждал такие вещи?
Твой класс создаётся через провайдер?
вообще да, биндится синглтоном в \App\Providers\AppServiceProvider::boot() $this->app->singleton('my', MyClass::class); на setUp теста прокидывается в контейнер так: app()->when(MyClass::class)->needs('$uuid')->give('faba77df-c86f-46aa-a074-9079b58169bb')
Обсуждают сегодня