Фабрика Laravel не может создать, потому что уже имеет один

#laravel #testing

#laravel #тестирование

Вопрос:

Я хочу создать с factory в тестовом примере, но я получил ошибку проверки, в которой говорится, что имя уже занято. Но как? Он всегда обновляет базу данных при каждом запуске теста.

Фабрика

 $factory->define(Companies::class, function (Faker $faker) {
    return [
        'name' => $faker->unique()->company,
        'email' => $faker->email,
        'website' => $faker->url,
    ];
});
  

Тест

 
        Storage::fake('local');

        $image = UploadedFile::fake()->image('avatar.jpg', 150, 150);

        $companies = factory(Companies::class)->create([
            'logo' => $image
        ]);
        $company = $companies->toArray();

        $this->actingAs($this->user);
        $response = $this->postJson('/home/companies/create/add', $company);
        $response->assertStatus(302);
  

Комментарии:

1. сделать composer dump-autoload

2. Та же ошибка проверки

3. Как я уже говорил вам в последнем вопросе, вы не должны использовать фабрики в качестве входных данных, вы не можете сохранить загруженный файл на фабрике компании и ожидать, что он будет работать.

Ответ №1:

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

просто в верхней части вашего тестового класса напишите: use REFRESHHD Database;

Удачи