Laravel: нарушение ограничений целостности только на этапе подготовки - PullRequest
0 голосов
/ 16 марта 2020

Я боролся с этим некоторое время и ничего не нашел. Я надеюсь, что вы можете мне помочь.

У меня есть локальная среда в Lumen с некоторыми базами данных, а также у меня есть несколько тестов для проверки API. В местном все отлично работает. Я даже проверил с несколькими компьютерами, и все тоже отлично работает. Проблема заключается в том, что я загружаю его в нашу предварительную производственную среду, где тесты не выполняются.

Предварительная производственная среда работает PHP 7,3 , Laravel 6,4 .0 , MySQL 5.7 и alpine Linux

Это один из тестов, которые не пройдены:

    public function testUserSearch() {

    $userA = factory(User::class)->create();

    $userB = factory(User::class)->create();

    $url = '/api/users/search?name=' . $userA->name;

    echo $userA;

    $this->actingAs($userA, 'api')->get($url)
        ->assertJsonFragment(['id' => $userA->id])
        ->assertJsonMissing(['id' => $userB->id])
        ->assertStatus(200);

}

Фабрика пользователей:

$factory->define(User::class, function (Faker $faker) {
    return [
        'name' => $faker->name,
        'email' => $faker->unique()->safeEmail,
        'password' => 'password',
        'api_token' => Str::random(60),
        'language' => 'es',
        'role_id' => 1,
        'remember_token' => Str::random(10),
   ];

});

Миграция таблицы пользователей:

    Schema::create('users', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->string('password');
        $table->string('language')->default('es');
        $table->string('place')->nullable();
        $table->string('category')->nullable();
        $table->boolean('checkin_notification')->default(false);
        $table->unsignedBigInteger('role_id')->default(self::DEFAULT_ROLE);
        $table->rememberToken();

        $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade')->onUpdate('cascade');
        $table->timestamps();
    });

Таблица ролей:

    Schema::create('roles', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('name');
        $table->string('ident')->unique();
        $table->text('description');
        $table->boolean('active')->defualt(0);
        $table->integer('level')->default(99);
        $table->timestamps();
    });

И ошибка, которую я получаю:

enter image description here

Заранее спасибо!

1 Ответ

0 голосов
/ 16 марта 2020

Создайте Role Factory и попробуйте это

    $factory->define(User::class, function (Faker $faker) use ($factory) {
    return [
        'name' => $faker->name,
        'email' => $faker->unique()->safeEmail,
        'password' => 'password',
        'api_token' => Str::random(60),
        'language' => 'es',
        'role_id' => $factory->create(Role::class)->id,
        'remember_token' => Str::random(10),
   ];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...