共计 1611 个字符,预计需要花费 5 分钟才能阅读完成。
Laravel 框架内置了许多测试辅助函数和模拟功能,这非常好。然而,我注意到其他工程师在出现问题时往往会陷入调试困境。
Laravel 文档中给出了以下示例:
Queue::assertPushed(function (ShipOrder $job) use ($order) {return $job->order->id === $order->id;
});
很简单,对吧?我们正在确保 `ShipOrder` 任务被推送到队列中,并且订单 ID 匹配。
但是,如果 ID 不匹配或者发生其他错误会怎样呢?我们会得到以下错误信息:
Failed asserting that false is true.
这并没有什么用。我们知道任务没有被推送,但是是由于 ID 匹配失败还是其他原因引起的呢?当需要满足多个条件时,这个问题就变得更加复杂了:
Queue::assertPushed(function (ShipOrder $job) use ($order) {return $job->order->id === $order->id
&& $job->order->second === $order->second
&& $job->order->third === $order->third
&& $job->order->fourth === $order->fourth;
});
现在,如果任何一个条件失败,我们仍然会得到相同的 PHPUnit 错误消息:
Failed asserting that false is true.
我们无法轻松知道哪个条件失败了。您可以逐个删除条件进行排查,但这是一种耗时的过程。有更好的方法。
我们可以使用断言来比较每个条件,而不是使用链式条件。然后,如果所有条件都为真,手动返回 true。
Queue::assertPushed(function (ShipOrder $job) use ($order) {$this->assertSame($job->order->id, $order->id);
$this->assertSame($job->order->second, $order->second);
$this->assertSame($job->order->third, $order->third);
$this->assertSame($job->order->fourth, $order->fourth);
return true;
});
现在,如果任何一个断言失败,PHPUnit 将能够精确定位到错误的行号,从而加快调试速度,让您迅速解决问题。 文章来源:https://www.toymoban.com/diary/laravel/693.html
Failed asserting that X is identical to Y
# ---
Failed asserting that 456 is identical to 123.
/tests/PathToFileTest.php:62
总之,通过为每个比较使用断言,您可以快速定位和解决代码中的问题。有效利用 Laravel 的模拟功能可以显著提高开发者的生产力。 文章来源地址 https://www.toymoban.com/diary/laravel/693.html
到此这篇关于使用 Laravel Mock 提高您的工作效率的文章就介绍到这了, 更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持 TOY 模板网!
原文地址:https://www.toymoban.com/diary/laravel/693.html
如若转载,请注明出处:如若内容造成侵权 / 违法违规 / 事实不符,请联系站长进行投诉反馈,一经查实,立即删除!