В 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, программный запуск миграций внутри тестов, обновление базы данных тестирования и заполнение данных с помощью миграций. Используя эти методы, вы можете гарантировать, что ваши тесты будут иметь доступ к правильной схеме и данным базы данных, что приведет к более надежному и всестороннему тестированию.