接着第一篇文章开始,接下来我们继续添加单元测试方法。

测试代码优化

在上面的代码中,首先新增了一个setUp方法,这个方法的作用是在每次进行测试时,首先运行这个方法,然后再运行其余的方法。同时对第一篇中的两个测试方法进行了重构,在Laravel中能够很方便的使用->来进行串接,使代码美观易读。最后,我们新添加了第三个方法,用来测试一个帖子下面能够显示对应的回复。

此时进行单元测试,肯定会失败,因为在thread的show页面,我们还没有写reply的代码。打开threads/show.blade.php

然后在app\Models\Thread.php中加入如下代码。在这里我们新加入了一个方法replies,并且用到了Eloquent里的hasMany关系。

修改完毕后,运行单元测试,此时测试通过。接着我们需要丰富一下Reply的内容。在threads/show.blade.php中,加入如下代码。

此时进行测试,肯定会失败。因为我们没有定义$reply->owner这个方法。在添加这个方法之前,让我们输入下面的命令,新建一个测试文件,该命令会在tests/Unit文件夹下新建一个名为ReplyTest.php的文件。

关于Feature和Unit文件夹里测试的区别。

默认在你应用的 tests 目录下包含了两个子目录: Feature 和 Unit。单元测试是针对你代码中相对独立而且非常少的一部分代码来进行测试。实际上,大多数单元测试可能都是针对某一个方法来进行的。功能测试是针对你代码中大部分的代码来进行测试,包括几个对象的相互作用,甚至是一个完整的 HTTP 请求 JSON 实例。

在新添加的ReplyTest中加入下面的测试方法用来测试每个Reply应当对应一个owner。

修改完毕后,在终端中输入下面的代码进行指定的单元测试。当然,此时测试肯定会失败。

根据对应的错误信息,我们对Reply.php进行更改。

此时,再次输入刚才的单元测试命令,测试通过。

本次代码地址https://github.com/SimuraEpona/forum/tree/Article-2.

发表评论

电子邮件地址不会被公开。 必填项已用*标注