php - 事件分派(dispatch)器断言找不到 assertDispatched 事件

标签 php laravel laravel-5

我得到了错误

错误:调用未定义的方法 Illuminate\Events\Dispatcher::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;
    });

  }
}

该方法已按照 Laravel 5.5 文档中的说明使用,当我在 Debug模式下运行时,我确实看到了实际事件被触发,但是测试在这一行给出了错误

Event::assertDispatched(RequesterObserver::class, function($event) use ($expected)

最佳答案

您的 testRequesterCreationTriggersObserver() 函数中缺少 Event::fake() 调用。

关于php - 事件分派(dispatch)器断言找不到 assertDispatched 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47310201/

相关文章:

php - Laravel 未在 localhost :8000 上显示图像

php - 我如何在 PHP 中找到所有加起来等于给定总和的 N 个单位数、非重复数字集?

php 和 mysql 脚本超时没有错误?

php - 如何在 Laravel 5 中获取复选框数组的值?

php - 金额参数是必需的 - Omnipay paypal with laravel

php - 如何从公共(public)文件夹中检索图像并在 Laravel 中转换为 base64?

laravel-5 - 如何在 laravel 项目中运行 FFMPEG

php - 检查字符串中是否存在多个单词之一?

php - 使用 Jquery .ajax 模态表单提交到 PHP

php - 在资源路由中创建 laravel