Menu

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键即可补齐模板,十分便捷。

本文章首发在 Laravel China 社区
上一篇 下一篇
讨论数量: 0
发起讨论


暂无话题~
刻意练习,每日精进。
4
点赞
375
浏览
0
讨论

维护者
14
14