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

24,046次阅读
没有评论

共计 1611 个字符,预计需要花费 5 分钟才能阅读完成。

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

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

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于1970-01-01发表,共计1611字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)