2017-01-22 2 views
4

Я пытаюсь воссоздать базу данных перед каждым тестированием в некотором случае phpunit. Я использую laravel 5.3. Здесь TestCase:Как запустить сеялку базы данных laravel из набора тестов phpunitUp?

class CourseTypesTest extends TestCase 
{ 
    public function setUp() 
    { 
     parent::setUp(); 
     Artisan::call('migrate'); 
     Artisan::call('db:seed', ['--class' => 'TestDatabaseSeeder ', '--database' => 'testing']); 
    } 

    /** 
    * A basic functional test example. 
    * 
    * @return void 
    */ 
    public function test_list_course_types() 
    { 
     $httpRequest = $this->json('GET', '/api/course-types'); 
     $httpRequest->assertResponseOk(); 
     $httpRequest->seeJson(); 

    } 

    public function tearDown() 
    { 
     Artisan::call('migrate:reset'); 
     parent::tearDown(); 
    } 
} 

Запуск phpunit с ошибкой:

$ phpunit PHPUnit 5.7.5 by Sebastian Bergmann and contributors.

E 1/ 1 (100%)

Time: 2.19 seconds, Memory: 12.00MB

There was 1 error:

1) CourseTypesTest::test_list_course_types ReflectionException: Class TestDatabaseSeeder does not exist

D:\www\learn-laravel\my-folder-api\vendor\laravel\framework\src\Illuminate\Container\Container.php:749 D:\www\learn-laravel\my-folder-api\vendor\laravel\framework\src\Illuminate\Container\Container.php:644 D:\www\learn-laravel\my-folder-api\vendor\laravel\framework\src\Illuminate\Foundation\Application.php:709 D:\www\learn-laravel\my-folder-api\vendor\laravel\framework\src\Illuminate\Database\Console\Seeds\SeedCommand.php:74 D:\www\learn-laravel\my-folder-api\vendor\laravel\framework\src\Illuminate\Database\Console\Seeds\SeedCommand.php:63 D:\www\learn-laravel\my-folder-api\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php:2292 D:\www\learn-laravel\my-folder-api\vendor\laravel\framework\src\Illuminate\Database\Console\Seeds\SeedCommand.php:64 D:\www\learn-laravel\my-folder-api\vendor\laravel\framework\src\Illuminate\Container\Container.php:508 D:\www\learn-laravel\my-folder-api\vendor\laravel\framework\src\Illuminate\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\Illuminate\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\Illuminate\Console\Application.php:107 D:\www\learn-laravel\my-folder-api\vendor\laravel\framework\src\Illuminate\Foundation\Console\Kernel.php:218 D:\www\learn-laravel\my-folder-api\vendor\laravel\framework\src\Illuminate\Support\Facades\Facade.php:237 D:\www\learn-laravel\my-folder-api\tests\rest\CourseTypesTest.php:17

ERRORS! Tests: 1, Assertions: 0, Errors: 1.

, но этот класс существует:
TestDatabaseSeeder inside database/seeds

ответ

4

Я скопировал свой код в мой тестовый проект, и это заняло у меня около 5 минут, чтобы понять это.

Проблема в пустом пространстве в аргументе -class. Если вы внимательно посмотрите на массив '--class' => 'TestDatabaseSeeder ', то в конце есть пространство ... это проблема. Измените его на '--class' => 'TestDatabaseSeeder', и он должен работать нормально.

+0

Поздравляем! Пустое место .. отлично :) – gandra404

+0

Если вам нравится переносить только один раз ваши данные, отметьте это https://stackoverflow.com/questions/21893698/how-do-seed-my-database-in-the-setupbeforeclass -метод-в-Laravel-4-блок-TES – pablorsk