laravel - 如何在 Laravel 单元测试中停止事件伪造(切换事件伪造)
问题描述
我正在开发一个 Laravel 应用程序并进行单元测试。现在,我在单元测试中伪造和不伪造 Laravel 事件时遇到了一些问题。我正在尝试做的是这样的事情。
public function test_something()
{
Event::fake();
//Do somethng
//Then I want to stop faking event here something like this
Event::stopFaking(); //maybe
}
我认为我的代码是不言自明的。我怎样才能在 Laravel 中实现这样的目标?
解决方案
https://laravel.com/docs/5.7/mocking
如果你只想为你的部分测试伪造事件监听器,你可以使用 fakeFor 方法:
$order = Event::fakeFor(function () {
$order = factory(Order::class)->create();
Event::assertDispatched(OrderCreated::class);
return $order;
});
// Events are dispatched as normal and observers will run ...
$order->update([...]);
里面的所有东西function() {}
都有伪造的事件。外面的一切都会正常运作。
推荐阅读
- python - ValueError: 操作数无法与形状 (638,) (0,) (638,) 一起广播
- katalon-studio - Katalon studio 和 Katalon 录音机有什么区别?
- python - 用于 Kubernetes 的 Python 客户端库给出错误
- postgresql - 根据列值获取多行组合成一行
- stored-procedures - 提取/使用实体框架核心的存储过程返回的模型
- mongodb - 从两个数据库集合(Mongoose/MongoDB)中查询和匹配
- c - 无法使用 valgrind 修复 pthread 内存泄漏
- python - 在 Python 中安装 Paramiko 时出现 Bcrypt 错误
- jwt - jwt 是否总是为所有用户使用相同的密钥?
- azure - cosmos db中的文档过期后如何从azure搜索中删除文档?