2017-11-15 13 views
0

私は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) 
+0

もし私がそれを行うなら、イベントはディスパッチされずに残ります。 –

答えて

0

testRequesterCreationTriggersObserver()関数にEvent::fake()呼び出しがありません。

+0

イベントがインポートされました。これは静的メソッド呼び出しです。さらに、イベントフェイクを入れるとアサーションは失敗し、 –

関連する問題