Log Fake for Laravel
source link: https://www.tuicool.com/articles/hit/2yIBR3Z
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Log Fake is a drop-in fake logger for testing with the Laravel framework by Tim MacDonald ( @timacdonald ). The Log fake package gives you the ability to fake the logger in your application, including the ability to make assertions against channels and stacks introduced in Laravel 5.6.
Here’s a simple example of using the logger in a test:
<?php use TiMacDonald\Log\LogFake; use Illuminate\Support\Facades\Log; //... Log::swap(new LogFake); Log::info('Donuts have arrived'); Log::assertLogged('info', function ($message, $context) { return str_contains($message, 'Donuts'); });
As mentioned, this fake supports channels and stacks, so if you are logging to a specific channel in your app, you need to prefix your assertions with a given channel:
<?php Log::channel('slack')->alert('It is 5pm, go home'); Log::channel('slack')->assertLogged('alert'); // passes // without the channel prefix... Log::assertLogged('alert'); // fails
Like channels, you will need to do the same thing for stacks:
<?php Log::swap(new LogFake); Log::stack(['bugsnag', 'sentry'])->critical('Perform evasive maneuvers'); Log::stack(['bugsnag', 'sentry'])->assertLogged('critical'); // passes // without the stack prefix... Log::assertLogged('critical'); // fails
The GitHub repo has a full list of available assertions and usage instructions, along with the source code.
Nice work Tim!
This appeared first onLaravel News
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK