You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Forge CLI的user:show命令PestPHP测试无输出问题解决

Laravel Forge CLI user:show命令PestPHP测试expectsTable断言失败的修复

我负责维护Laravel Forge CLI项目,新增了user:show命令,用来获取并展示当前用户的ID、邮箱、第三方平台连接状态等信息——这个命令在终端运行完全正常,但编写PestPHP测试用例时,用expectsTable断言验证输出一直失败,测试上下文里的输出是空的,连表头都没打印出来。

折腾一阵后经人提示才找到问题:必须给expectsTable的每个表头和数据值都加上3个空格的前缀,修改后测试直接通过。

错误示例(测试失败)

it('shows user details', function () {
    $this->forge->user()->shouldReturn([
        'id' => 1,
        'email' => 'test@example.com',
        'connected_to_github' => true,
    ]);

    $this->artisan('user:show')
        ->expectsTable(
            ['ID', 'Email', 'GitHub Connected'],
            [[1, 'test@example.com', 'Yes']]
        );
});

修复后示例(测试通过)

it('shows user details', function () {
    $this->forge->user()->shouldReturn([
        'id' => 1,
        'email' => 'test@example.com',
        'connected_to_github' => true,
    ]);

    $this->artisan('user:show')
        ->expectsTable(
            ['   ID', '   Email', '   GitHub Connected'],
            [['   1', '   test@example.com', '   Yes']]
        );
});

问题根源在于Laravel Forge CLI的命令输出里,表格的每一项默认带有3个空格前缀,而Pest的expectsTable断言是严格匹配输出格式的,必须在测试的表头和数据里补上这部分空格才能匹配成功。

内容的提问来源于stack exchange,提问作者Stollpy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 03:14:57