对输出进行测试

最后更新于:2022-04-01 03:44:35

# 对输出进行测试 有时候,想要断言(比如说)某方法的运行过程中生成了预期的输出(例如,通过 `echo` 或 `print`)。`PHPUnit_Framework_TestCase` 类使用 PHP 的 [输出缓冲](http://www.php.net/manual/en/ref.outcontrol.php) 特性来为此提供必要的功能支持。 [Example 2.16, “对函数或方法的输出进行测试”](# "Example 2.16. 对函数或方法的输出进行测试")展示了如何用 `expectOutputString()` 方法来设定所预期的输出。如果没有产生预期的输出,测试将计为失败。 **Example 2.16. 对函数或方法的输出进行测试** ~~~ <?php class OutputTest extends PHPUnit_Framework_TestCase { public function testExpectFooActualFoo() { $this->expectOutputString('foo'); print 'foo'; } public function testExpectBarActualBaz() { $this->expectOutputString('bar'); print 'baz'; } } ?> ~~~ ~~~ phpunit OutputTest PHPUnit 5.0.0 by Sebastian Bergmann and contributors. .F Time: 0 seconds, Memory: 5.75Mb There was 1 failure: 1) OutputTest::testExpectBarActualBaz Failed asserting that two strings are equal. --- Expected +++ Actual @@ @@ -'bar' +'baz' FAILURES! Tests: 2, Assertions: 2, Failures: 1. ~~~ [Table 2.2, “用于对输出进行测试的方法”](# "Table 2.2. 用于对输出进行测试的方法")中列举了用于对输出进行测试的各种方法。 **Table 2.2. 用于对输出进行测试的方法** | 方法 | 含义 | |-----|-----| | void expectOutputRegex(string $regularExpression) | 设置输出预期为输出应当匹配正则表达式 `$regularExpression`。 | | void expectOutputString(string $expectedString) | 设置输出预期为输出应当与 `$expectedString` 字符串相等。 | | bool setOutputCallback(callable $callback) | 设置回调函数,用来做诸如将实际输出规范化之类的动作。 | >[info] ### Note > 在严格模式下,本身产生输出的测试将会失败。
';