#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;
Удачи