问题:运行 PHPUnit 测试时无法将标准输出重定向到文件。怎么玩:
1. 创建测试
php artisan make:test StdoutTest --unit
测试内容:
<?php
namespace Tests\Unit;
use PHPUnit\Framework\TestCase;
class StdoutTest extends TestCase
{
public function testExample()
{
die("ok");
}
}
2.运行测试:
php artisan test --filter StdoutTest > dump.log
测试ok打印到控制台,但dump.log文件中没有任何内容。
- 检查stderr,它是空的
可能是什么问题呢?
事实证明,您需要使用该选项
--without-tty:我在 Laravel 源代码中找到了它。如果你再深入一点,在“tty”模式下,输出是
/dev/tty. 因此,重定向stdout到stderr文件不会产生预期的结果。