7.创建便于测试的辅助函数

未匹配的标注

本节说明

  • 对应视频第 7 小节:Let's Make Some Testing Helpers

本节内容

本节让我们来建立一些测试时用到的辅助函数,方便我们进行编写测试:
修改composer.json

.
.
"autoload-dev": {
    "psr-4": {
        "Tests\\": "tests/"
    },
    "files":["tests/utilities/functions.php"]  -->这里增加一行
},
.
.

新建tests/utilities/functions.php文件,执行命令将该文件加载进来:

$ composer dump-autoload

我们将获取模型实例这样的方法,例如create()make()抽离出来,放到functions.php中:
\tests\utilities\functions.php

<?php

function create($class,$attributes = [])
{
    return factory($class)->create($attributes);
}

function make($class,$attributes = [])
{
    return factory($class)->make($attributes);
}

function raw($class,$attributes = [])
{
    return factory($class)->raw($attributes);
}

在很多测试中,我们需要测试用户是否登录。在之前的测试当中,我们使用了be()actingAs()方法来得到一个已登录用户。现在我们在TestCase.php新建signIn()方法,将用户登录的逻辑放在基类文件中:
\tests\TestCase.php

<?php

namespace Tests;

use Illuminate\Foundation\Testing\TestCase as BaseTestCase;

abstract class TestCase extends BaseTestCase
{
    use CreatesApplication;

    protected function signIn($user = null)
    {
        $user = $user ?: create('App\User');

        $this->actingAs($user);

        return $this;
    }
}

现在我们需要重构之前的代码,将像factory('App\Reply')->create()这样的代码片段更改为create('App\Reply')be()actingAs()方法更改为signIn()方法。
对于使用PHP Storm的 开发人员,我们有建立测试更加便捷的方法:

  1. 新建一个template:
    file
  2. 在相对应的位置填充完模板,在点击Edit variables
    file
  3. 定义应用的位置everywhere
    file
  4. 勾上Reformat according to style
    file
  5. 最后点击Apply应用设置,再点击OK
    file
    建完模板之后,再新建一个 PHP 文件,输入testclass后使用Tab键即可补齐模板,十分便捷。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~