Комплексное руководство по выполнению миграции базы данных в среде тестирования Laravel

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

Метод 1: использование команды Artisan
Один из самых простых способов выполнить миграцию базы данных в среде тестирования Laravel — использовать команду Artisan migrate. Флаг --env=testingуказывает среду тестирования. Вот пример:

php artisan migrate --env=testing

Метод 2: программный запуск миграции
Вы также можете выполнять миграцию программно в рамках своих тестов. Laravel предоставляет метод migrateчерез признак Illuminate\Foundation\Testing\DatabaseMigrations. Этот метод выполняет все ожидающие миграции для подключения к тестовой базе данных. Вот пример:

use Illuminate\Foundation\Testing\DatabaseMigrations;
class ExampleTest extends TestCase
{
    use DatabaseMigrations;
    public function testExample()
    {
        // Your test logic here

        $this->artisan('migrate', ['--env' => 'testing']);

        // Additional test assertions
    }
}

Метод 3. Обновление базы данных тестирования
В некоторых случаях может потребоваться обновить всю базу данных тестирования, включая выполнение всех миграций. Для этой цели полезен метод refreshDatabase, предоставляемый признаком DatabaseMigrations. Он запускает миграцию, а затем заполняет базу данных данными по умолчанию. Вот пример:

use Illuminate\Foundation\Testing\DatabaseMigrations;
class ExampleTest extends TestCase
{
    use DatabaseMigrations;
    public function testExample()
    {
        // Your test logic here

        $this->refreshDatabase();

        // Additional test assertions
    }
}

Метод 4: заполнение данных с помощью миграции
Laravel позволяет вам заполнять тестовую базу данных примерами данных во время миграции. Вы можете определить метод runв файле миграции и использовать класс Seederдля заполнения данных. Вот пример:

use Illuminate\Support\Facades\DB;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Seeder;
class CreateUsersTable extends Migration
{
    public function up()
    {
        // Create the users table

        $this->seed(TestingDatabaseSeeder::class);
    }
    public function down()
    {
        // Drop the users table
    }
}
class TestingDatabaseSeeder extends Seeder
{
    public function run()
    {
        DB::table('users')->insert([
            'name' => 'John Doe',
            'email' => 'john@example.com',
            'password' => bcrypt('password'),
        ]);
    }
}

Выполнение миграции базы данных в среде тестирования Laravel имеет решающее значение для поддержания согласованной структуры базы данных. В этой статье мы рассмотрели несколько методов запуска миграций в среде тестирования, включая использование команды Artisan, программный запуск миграций внутри тестов, обновление базы данных тестирования и заполнение данных с помощью миграций. Используя эти методы, вы можете гарантировать, что ваши тесты будут иметь доступ к правильной схеме и данным базы данных, что приведет к более надежному и всестороннему тестированию.