jeudi 31 mars 2016

Laravel testing without firing cache events

I am using the array cache driver while testing, however I want to disable the Cache Events.

I can do this with

$this->withoutEvents();

I'd rather just stop the one event, however

$this->expectsEvents(Illuminate\Cache\Events\KeyForgotten::class);

will throw an error if the event is not called.

One solution would be a function that on the outside allows an event to fire and hides it but doesn't throw an error if the event doesn't occur.

I think I need to mock the Events Dispatcher like so

$mock = Mockery::mock('Illuminate\Contracts\Events\Dispatcher');

$mock->shouldReceive('fire')->andReturnUsing(function ($called) {
    $this->firedEvents[] = $called;
});

$this->app->instance('events', $mock);

return $this;

The question would be how to carry on dispatching the non caught events?

Aucun commentaire:

Enregistrer un commentaire