热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

测试EloquentObserver的方法是否触发事件

如何解决《测试EloquentObserver的方法是否触发事件》经验,为你挑选了1个好方法。

当Eloquent模型属性之一更新时,我正在使用的应用程序将触发一个事件。

Eloquent模型被调用Job,并且应该在更新属性JobCustomerTotalAmountDueChanged时触发duration。我在中有以下代码JobObserver

public function saved(Job $job)
{
    if ($job->isDirty('duration')) {
        event(new JobCustomerTotalAmountDueChanged($job));
    }
}

当我尝试使用进行测试时Event::fake,不会触发savedEloquent 事件,这意味着永远不会执行方法中的代码。从我看到的assertDispatchedassertNotDispatched方法仅适用于伪造的事件。有没有一种方法可以断言是否不触发特定事件Event::fake



1> Amade..:

毕竟,该解决方案非常简单:

Laravel让您指定哪些事件应该被伪造,作为fake方法的参数。在我的示例中:

Event::fake([JobCustomerTotalAmountDueChanged::class])

所有其他事件都将被触发和处理。另外,您只能对作为fake方法参数传递的事件进行断言。如果您不传递任何参数,Laravel将尝试“伪造”应用程序中的每个事件。


推荐阅读
author-avatar
布尔熊
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有