Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从PHPUnit测试设置运行Laravel数据库播种器?_Laravel_Laravel 5_Phpunit_Laravel Seeding - Fatal编程技术网

如何从PHPUnit测试设置运行Laravel数据库播种器?

如何从PHPUnit测试设置运行Laravel数据库播种器?,laravel,laravel-5,phpunit,laravel-seeding,Laravel,Laravel 5,Phpunit,Laravel Seeding,在一些PHPUnit测试用例中,我试图在每次测试之前重新创建数据库。我使用的是Laravel 5.3。下面是测试用例: class CourseTypesTest扩展了TestCase { 公共功能设置() { 父::设置(); Artisan::调用('migrate'); Artisan::call('db:seed',['-class'=>TestDatabaseSeeder','-database'=>testing']); } /** *一个基本的功能测试示例。 * *@返回无效 */

在一些PHPUnit测试用例中,我试图在每次测试之前重新创建数据库。我使用的是Laravel 5.3。下面是测试用例:

class CourseTypesTest扩展了TestCase
{
公共功能设置()
{
父::设置();
Artisan::调用('migrate');
Artisan::call('db:seed',['-class'=>TestDatabaseSeeder','-database'=>testing']);
}
/**
*一个基本的功能测试示例。
*
*@返回无效
*/
公共功能测试\列表\课程\类型()
{
$httpRequest=$this->json('GET','/api/course-types');
$httpRequest->assertResponseOk();
$httpRequest->seeJson();
}
公共函数拆卸()
{
Artisan::调用('migrate:reset');
父::拆卸();
}
}
运行
phpunit
失败,出现错误:

$phpunit phpunit 5.7.5由塞巴斯蒂安·伯格曼和贡献者撰写

e1/ 1(100%)

时间:2.19秒,内存:12.00MB

有1个错误:

1) CourseTypesTest::测试\列表\课程\类型反射异常:类 TestDatabaseSeeder不存在

D:\www\learn laravel\my folder api\vendor\laravel\framework\src\illumb\Container\Container.php:749 D:\www\learn laravel\my folder api\vendor\laravel\framework\src\light\Container\Container.php:644 D:\www\learn laravel\my folder api\vendor\laravel\framework\src\illumb\Foundation\Application.php:709 D:\www\learn laravel\my folder api\vendor\laravel\framework\src\light\Database\Console\Seeds\SeedCommand.php:74 D:\www\learn laravel\my folder api\vendor\laravel\framework\src\light\Database\Console\Seeds\SeedCommand.php:63 D:\www\learn laravel\my folder api\vendor\laravel\framework\src\illumb\Database\Eloquent\Model.php:2292 D:\www\learn laravel\my folder api\vendor\laravel\framework\src\light\Database\Console\Seeds\SeedCommand.php:64 D:\www\learn laravel\my folder api\vendor\laravel\framework\src\illumb\Container\Container.php:508 D:\www\learn laravel\my folder api\vendor\laravel\framework\src\illumb\Console\Command.php:169 D:\www\learn laravel\my folder api\vendor\symfony\console\Command\Command.php:254 D:\www\learn laravel\my folder api\vendor\laravel\framework\src\illumb\Console\Command.php:155 D:\www\learn laravel\my folder api\vendor\symfony\console\Application.php:821 D:\www\learn laravel\my folder api\vendor\symfony\console\Application.php:187 D:\www\learn laravel\my folder api\vendor\symfony\console\Application.php:118 D:\www\learn laravel\my folder api\vendor\laravel\framework\src\illumb\Console\Application.php:107 D:\www\learn laravel\my folder api\vendor\laravel\framework\src\illumb\Foundation\Console\Kernel.php:218 D:\www\learn laravel\my folder api\vendor\laravel\framework\src\illumb\Support\Facades\Facade.php:237 D:\www\learn laravel\my folder api\tests\rest\CourseTypesTest.php:17

错误!测试:1,断言:0,错误:1

但此类存在:

问题在于--class参数中的空格。如果仔细观察数组--class'=>“TestDatabaseSeeder',最后会有一些空间。。。这就是问题所在。将其更改为
'--class'=>“TestDatabaseSeeder'
,它应该可以正常工作。

可以自己实例化
DatabaseSeeder
,并且它的
调用方法是公共的

CourseTypesTest
课程中,你需要做的就是

(new DatabaseSeeder())->call(TestDatabaseSeeder::class);
或者您可以使用Laravel的
应用程序
助手,如下所示

app(DatabaseSeeder::class)->call(TestDatabaseSeeder::class);

从5.8版开始,您可以执行以下操作:

// Run the DatabaseSeeder...
$this->seed();

// Run a single seeder...
$this->seed(OrderStatusesTableSeeder::class);

恭喜!空位。。太好了:)如果您只想迁移一次数据,请选中此项