【问题标题】:Running Laravel anonymous migrations in Orchestra Test Bench在 Orchestra Test Bench 中运行 Laravel 匿名迁移
【发布时间】:2022-06-15 20:28:14
【问题描述】:

在 Orchestra Test Bench 中进行测试时,我经常需要与数据库进行交互。它曾经是在你的 TestCase 中你会运行这个:

protected function getEnvironmentSetUp($app)
{
        include_once __DIR__ . '/../database/migrations/2021_01_01_100000_create_processes_table.php';
        (new \CreateProcessesTable())->up();
}

自 Laravel 9(我相信)以来,现在有匿名迁移,顾名思义,没有类名。所以上面的方法是行不通的。值得庆幸的是,这确实允许在一个包中运行迁移,但是,我经常想在另一个包中运行迁移,而那些没有被 'RefreshDatabase' 特征拾取。

以前我可以像上面那样手动调用它们,但现在我不清楚如何这样做。

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    所以我终于找到了一些解决方法,我想我会分享它,以防它在未来帮助任何人。我没有直接调用迁移,而是通过被测包的 ServiceProvider 中的条件从另一个包(它们在同一个 repo 中)引导迁移:

    public function boot() 
    {
        if(config('app.env') == 'testing') {
            $this->loadMigrationsFrom(__DIR__ . '/../../EventBus/database/migrations');
        }
    }
    

    不是最干净的解决方案,但实际上比在 TestCase 中手动加载每个表要好得多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-24
      • 1970-01-01
      • 2018-08-04
      • 1970-01-01
      • 2016-10-23
      • 2015-07-06
      • 2020-02-12
      • 2013-05-24
      相关资源
      最近更新 更多