如何在 Laravel 单元测试中停止事件伪造(切换事件伪造)
How to stop event faking (toggle event faking) in Laravel unit testing
我正在开发 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
If you only want to fake event listeners for a portion of your test, you may use the fakeFor method:
$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() {}
中的所有内容都会有伪造的事件。外面的一切都会正常运行。
Event::fake
函数在 Illuminate\Support\Facades\Event 中定义。
我们可以看到有一个fakeFor
方法只是在执行回调方法时伪造它,然后恢复原来的行为。你可以这样使用它:
public function test_something()
{
Event::fakeFor(function () {
//Do somethng
});
}
作为 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
If you only want to fake event listeners for a portion of your test, you may use the fakeFor method:
$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() {}
中的所有内容都会有伪造的事件。外面的一切都会正常运行。
Event::fake
函数在 Illuminate\Support\Facades\Event 中定义。
我们可以看到有一个fakeFor
方法只是在执行回调方法时伪造它,然后恢复原来的行为。你可以这样使用它:
public function test_something()
{
Event::fakeFor(function () {
//Do somethng
});
}
作为 Laravel 开发人员,阅读源代码通常很有用,此框架中有许多未记录在案的不错的点点滴滴!