* * @phpstan-import-type Record from \Monolog\Logger * @phpstan-import-type Level from \Monolog\Logger * * @internal feel free to reuse this to test your own handlers, this is marked internal to avoid issues with PHPStorm https://github.com/Seldaek/monolog/issues/1677 */ class TestCase extends \PHPUnit\Framework\TestCase { public function tearDown(): void { parent::tearDown(); if (isset($this->handler)) { unset($this->handler); } } /** * @param mixed[] $context * * @return array Record * * @phpstan-param Level $level * @phpstan-return Record */ protected function getRecord(int $level = Logger::WARNING, string $message = 'test', array $context = []): array { return [ 'message' => (string) $message, 'context' => $context, 'level' => $level, 'level_name' => Logger::getLevelName($level), 'channel' => 'test', 'datetime' => new DateTimeImmutable(true), 'extra' => [], ]; } /** * @phpstan-return Record[] */ protected function getMultipleRecords(): array { return [ $this->getRecord(Logger::DEBUG, 'debug message 1'), $this->getRecord(Logger::DEBUG, 'debug message 2'), $this->getRecord(Logger::INFO, 'information'), $this->getRecord(Logger::WARNING, 'warning'), $this->getRecord(Logger::ERROR, 'error'), ]; } protected function getIdentityFormatter(): FormatterInterface { $formatter = $this->createMock(FormatterInterface::class); $formatter->expects($this->any()) ->method('format') ->will($this->returnCallback(function ($record) { return $record['message']; })); return $formatter; } } __halt_compiler();----SIGNATURE:----u8H/XUEAT8QpAlP67xG8ejocNhKqKfNsskaoQdtOey9E7bE7qVycb1Uu+M84Eazb+vxPy2lPgV8382dta7IpuXqr45xg81fLjB0NQbUNWLlpwSIwTMCgPFauzz9oHOom34g/1RVTsCuWKvjZgiBbn7cB8Ysk61LpEZwl/mqTjLISVzStBZhJT1NgRe3LjEg6V+9ac/v4gUYPPrf1kSVKjjt/Jf3/HqRefUq8BUsxLGagy8hGo4ataalZz8aN+jN/GxDw+MHiHHE9ATAM41Venp+jdVfe+GOeznTJAHdIGmyhfZnIHD2QyO+2pc8NHqsfrofHyCHWmGf1ZF8LU3fzJI+Xd4mlAN3ySoJipwl3X9ufHVrMGxnF4T4G7s0Ns/ckePn4ADKS3mu4FzWtbzHtGlH8K3jA7hnPZUXTRAIEHiWm52dxssGfJQjyLH4R6YUmA/wO38ZoOTSnX0CuOjSo3VDK+vQfevIWc9dnvmC7iZsXUV6+GdnbcjQ/TGxgSwcwLC+EJ8T68Nam3HqiWFFT/4KGah6w1EtnlQk/NPzleTLTAPH3CxX9IjPGCs704jeNpBj9gOlKSMfD7VnMKx0l52oGL7eFUG8x6PTl7Zm25kvcwhpzE5gQVgb68F4m5gxP0zetRf5Gbuuh8Hzd1q7vO3LYm8wDjl2PChgXU79a/WA=----ATTACHMENT:----MTU4NjAyMjA4OTI1Njk0IDgyOTY5NDgxMDY2MzkxNDYgNTM1MzY2Mjg0ODkxNjgwOQ==