代码优化

在开始继续下一个任务之前,让我们先优化一下代码。首先将threads/show.blade.php下面的Reply代码块单独提取出,在同文件夹下新建reply.blade.php文件,并将代码放入其中。然后修改show.blade.php文件,引入新建的文件。如下。

显示帖子作者

接下来,我们在帖子内容里显示出作者是谁。首先新建一个单元测试文件。

新创建的单元测试代码中第一个测试是添加了我们第二篇文章中的测试。a_thread_has_a_creator方法用于测试我们的此次目的。此时,输入下面的命对这个方法进行测试。

由于我们没有在Thread模型中定义creator这个关系,因此测试失败。下面我们添加这个Eloquent关系。

添加之后,再次进行测试,测试通过。接着,编辑threads/show.blade.php。使页面显示出作者。

保存文件之后,刷新页面,作者已经显示出来了。

登录的用户能够发表回复

输入上面的命令之后,在tests/Feture文件夹下会新建一个ParticipateInForumTest.php测试文件。

此时输入./vendor/bin/phpunit进行测试的话理所当然的会失败,但是一个奇怪的地方是,当把最后一行代码$this->get($thread->path())->assertSee($reply->body);注释掉之后再次执行测试的话,测试成功了。我们期望在发送post请求的时候抛出错误,因为我们还没有创建这个post路由。为了解决这个问题,打开app/Exceptions/Handler.php,在render方法里加入下面的代码。

新加入的代码表示如果是在测试环境,那么一碰到异常就马上抛出错误。修改之后再次进行测试的话,就会显示我们希望看到的错误了。错误原因为没有建立相应的路由,那么接下来建立对应的路由和控制器中的store方法。

在控制器中,我们新建了一个addReply方法,当然,现在Thread模型中还不存在这个方法,下面我们到Thread.php中添加这个方法以及对应的测试方法。

修改完毕后,进行测试,测试通过。

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

发表评论

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