目前我已经开始学习 Laravel 5.6 中的单元测试。 默认情况下,我的 laravel 项目有一个“tests”目录,其中还有 2 个目录,即“Features”和“Unit”。每个目录都包含一个“ExampleTest.php”
./tests/Features/ExampleTest.php
./tests/Unit/ExampleTest.php
每当我使用命令创建新的测试文件时
php artisan make:test BasicTest
默认情况下,它总是在“Features”目录中创建测试文件,而我希望在“tests”目录下创建该文件。
是否有一个命令可以用来指定测试文件的创建路径。 像这样的东西
php artisan make:test BasicTest --path="tests"
我已经尝试过上面的路径命令,但它不是一个有效的命令。
我需要更改 phpunit.xml 文件中的一些代码吗?
php artisan make:test Web/StatementPolicies/StatementPolicyListTest
默认情况下,它将在
StatementPolicyListTest
下创建一个文件,即StatementPolicies
(如果不存在,它将创建一个同名的新文件夹)文件夹下tests/Feature/Web
。
使用此命令
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