使用 Laravel Mock 提高您的工作效率

Laravel Mock

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 将能够精确定位到错误的行号,从而加快调试速度,让您迅速解决问题。

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

如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用
使用 Laravel 的 Http Facade(门面) 简化 API 集成
上一篇 2024年01月18日 10:15
使用DTO在Laravel中简化API响应
下一篇 2024年01月18日 11:34

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包