Laravel 测试 - 如何 运行 使用带种子的 RefreshDatabase 命令

Laravel Testing - How to run command with RefreshDatabase with seed

在 Laravel 我需要 运行 我的自定义命令在刷新数据库和 db:seed

之后

当我手动 运行 所有这些步骤时,此测试成功完成

我写这个测试代码

class ExampleTest extends TestCase
{

    use RefreshDatabase;

    
    public function testDbSeed()
    {
        Artisan::call('db:seed');
        $resultAsText = Artisan::output();
        $this->assertTrue(true);
    }

删除了所有表,然后 运行 我的所有迁移都成功了。

我的问题是如何在种子后 运行 我的自定义命令?

php artisan permission:sync

    public function testPermissionSync()
    {
        Artisan::call('permission:sync');
        $resultAsText = Artisan::output();
        $this->assertTrue(true);
    }

执行此命令后我们可以在ourlocalsite.local/

中打开主页
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testBasicTest()
    {

        $response = $this->get('/');

        $response->assertStatus(200);
    }

但此测试未通过,断言错误为 403

(当我手动执行这些步骤时,此命令 运行)

您可以使用在任何测试开始之前触发的 setUp() 方法。

但不要忘记调用父设置

public function setUp(): void
    {
        parent::setUp();
        Artisan::call('db:seed');
    }

还有tearDown()测试结束后触发的函数