Как тестировать код с базой данных?

Ответ
// 1. In-memory SQLite
$pdo = new PDO('sqlite::memory:');
$pdo->exec(file_get_contents('schema.sql'));

// 2. Laravel: RefreshDatabase trait
class UserTest extends TestCase {
    use RefreshDatabase;
    public function testCreate(): void {
        User::factory()->create(['name' => 'John']);
        $this->assertDatabaseHas('users', ['name' => 'John']);
    }
}

// 3. Testcontainers - реальная БД в Docker
// 4. Транзакции - откат после каждого теста
// 5. Fake repository - in-memory реализация

Рекомендация: unit-тесты с fake repository, интеграционные - с реальной БД (транзакции или RefreshDatabase).

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.