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
相关产品推荐
相关产品推荐

