51

Log Fake for Laravel

 5 years ago
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.
neoserver,ios ssh client

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK