jhwelch/pest-plugin-laravel-migrations

一个 Pest PHP 插件,允许您使用简单直观的语法测试 Laravel 迁移。

dev-main 2024-09-24 02:05 UTC

This package is auto-updated.

Last update: 2024-09-24 02:06:35 UTC


README

一个 Pest PHP 插件,允许您使用简单直观的语法测试 Laravel 迁移。

migration('2024_09_12_000000_update_users_table_combine_names', function ($up, $down) {
    $user = User::create([
        'first_name' => 'John',
        'last_name' => 'Doe',
    ]);

    $up();

    expect($user->fresh())
        ->full_name->toEqual('John Doe');

    $down();

    expect($user->fresh())
        ->first_name->toEqual('John')
        ->last_name->toEqual('Doe');
});

使用 Pest 和其他现代工具,测试 Laravel 应用程序的几乎每个方面都非常容易。然而,具有最大永久数据影响的地方之一仍然是未测试的。

数据库迁移。

任何给定的测试都是针对数据库的最新状态运行的。这使得测试任何执行复杂数据迁移的迁移变得困难。

此包旨在填补这一空白。

此包仍在开发中

一旦该包被标记为稳定,它将遵循 Semver,但是在这个阶段,API 不保证保持一致。

用法

此包包含两个 Pest 函数:migrationmigrationFunctions

migration

migration 是编写迁移测试最直接的方式。

所有迁移都将运行到目标。然后,在 $up() 上迁移目标,并使用 $down() 回滚,允许在每个步骤中进行设置和断言。

use function JHWelch\PestLaravelMigrations\migration;

migration('2024_09_12_000000_migration_name', function ($up, $down) {
    // Setup test Data
    // All migrations up until target have been run

    $up();

    // Run Assertions after migration "up"

    $down();

    // Run Assertions after migration "down"
});

如果您仅测试迁移的 up() 部分,您可以完全省略 $down 参数。

migration('2024_09_12_000000_migration_name', function ($up) {
    // Setup test Data
    // All migrations up until target have been run

    $up();

    // Run Assertions after migration "up"
});

migrationFunctions

此函数是 migration 包裹的功能的核心,但允许更多的定制性。

它返回一个包含 $up$down Closure 的两项数组,这些 Closure 触发迁移的每一半。

使用此函数的最简单方法是解构数组。

use function JHWelch\PestLaravelMigrations\migrationFunctions;

it('tests migrations', () {
    # Test only "up"
    [$up] = migrationFunctions('2024_09_12_000000_migration_name');
    
    # Test both "up" and "down"
    [$up, $down] = migrationFunctions('2024_09_12_000000_migration_name');
});

更多示例

有关更实际的示例,请参阅 ExampleUsageTest.php