Видимо, не до конца понял порядок запуска тестов.
У меня есть
env.testing, которая ссылается на тестовую бд. Созданы фабрики для моделей,
DatabaseSeeder.php использует эти фабрики и успешно создает данные. То есть при запуске
php artisan db:seed --env=testing все ок.
TestCase.php выглядит так. Используется трейт
RefreshDatabase, определено свойство
protected $seed = true; и переопределен метод
setUp().
Я полагал, что это работает следующим образом. При запуске каждого теста (класса) сначала вызывается метод
setUp() этого класса, который чистит таблицы, запускает миграции и заполняет тестовую таблицу сидами, используя
DatabaseSeeder.php. Затем в моем случае создаются еще 2 пользователя.
И вот после запуска всех тестов я смотрю в тестовую бд и не вижу этих 2 пользователей. Собственно, почему?
<?php
namespace Tests;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
use App\Models\User;
abstract class TestCase extends BaseTestCase
{
use CreatesApplication;
use RefreshDatabase;
protected $seed = true;
protected $admin;
protected $user;
protected $unverifiedUser;
protected function setUp(): void
{
parent::setUp();
$this->admin = User::find(1);
$this->user = User::factory()->create();
$this->unverifiedUser = User::factory()->create([
'email_verified_at' => null
]);
}
}