私はLaravel 5.5ドキュメントで呼ばれる方法が用いられてきたイベントディスパッチャアサーションは、assertDispatchedイベントが
<?php
namespace Tests\Unit;
use Tests\TestCase;
use App\Entities\Requester;
use App\Observers\RequesterObserver;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Event;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithoutMiddleware;
class RequesterObserverTest extends TestCase {
use RefreshDatabase;
public function setUp()
{
parent::setUp();
Mail::fake();
}
public function testRequesterCreationTriggersObserver(){
$expected = factory(Requester::class)->create();
//assert the creation event observer is fired
Event::assertDispatched(RequesterObserver::class, function($event) use ($expected){
return $event->requester->email_id === $expected->email_id;
});
}
}
テストのためにエラー
Error: Call to undefined method Illuminate\Events\Dispatcher::assertDispatched()
を取得見つけることができませんデバッグモードでは、実際のイベントが発生していますが、テストではこの行にエラーが表示されます
Event::assertDispatched(RequesterObserver::class, function($event) use ($expected)
もし私がそれを行うなら、イベントはディスパッチされずに残ります。 –