php artisan命令可在特定文件夹内制作测试文件

时间:2018-12-19 09:29:51

标签: laravel phpunit-testing

目前,我已经开始学习Laravel 5.6中的单元测试。 默认情况下,我的laravel项目有一个“ tests”目录,其中还有2个目录,分别是“ Features”和“ Unit”。每个目录都包含一个“ ExampleTest.php”

./tests/Features/ExampleTest.php
./tests/Unit/ExampleTest.php

每当我使用命令创建新的测试文件

php artisan make:test BasicTest

默认情况下,它总是在“功能”目录中创建测试文件,因为我希望在“测试”目录下创建文件。

有没有一条命令可以用来指定创建测试文件的路径。 像这样

php artisan make:test BasicTest --path="tests"

我已经尝试了上面的path命令,但这不是有效的命令。

我需要在phpunit.xml文件中更改一些代码吗?

2 个答案:

答案 0 :(得分:4)

php artisan make:test  Web/StatementPolicies/StatementPolicyListTest

默认情况下,它将在statement / Feature / Web下创建一个文件,即StatementPolicies下的StatementPolicyListTest(如果不存在,它将创建一个具有该名称的新文件夹)文件夹

答案 1 :(得分:1)

使用此命令

php artisan make:test BasicTest --unit

还可以使用

php artisan make:test --help

查看可用选项

您必须创建自定义artiasn命令

<?php

namespace App\Console;

class TestMakeCommand extends \Illuminate\Foundation\Console\TestMakeCommand
{
    /**
     * The console command name.
     *
     * @var string
     */
    protected $signature = 'make:test-custom {name : The name of the class} {--unit : Create a unit test} {--path= : Create a test in path}';

    /**
     * Get the default namespace for the class.
     *
     * @param  string  $rootNamespace
     * @return string
     */
    protected function getDefaultNamespace($rootNamespace)
    {
        $path = $this->option('path');
        if (!is_null($path)) {
            if ($path) {
                return $rootNamespace. '\\' . $path;
            }         

            return $rootNamespace;
        }

        if ($this->option('unit')) {
            return $rootNamespace.'\Unit';
        }

        return $rootNamespace.'\Feature';
    }
}

在内核中注册

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        TestMakeCommand::class
    ];
    ......  
}

然后您可以使用

php artisan make:test-custom BasicTest --path=

php artisan make:test-custom BasicTest --path=Example