PHPUnit9.0 编写PHPUnit测试-对输出进行测试

2022-03-22 11:12 更新

有时候,想要断言(比如说)某方法的运行过程中生成了预期的输出(例如,通过 ​echo ​或 ​print​)。​PHPUnit\Framework\TestCase​ 类使用 PHP 的输出缓冲特性来为此提供必要的功能支持。

示例 2.14 展示了如何用 ​expectOutputString()​ 方法来设定所预期的输出。如果没有产生预期的输出,测试将计为失败。

示例 2.14 对函数或方法的输出进行测试

<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class OutputTest extends TestCase
{
    public function testExpectFooActualFoo(): void
    {
        $this->expectOutputString('foo');

        print 'foo';
    }

    public function testExpectBarActualBaz(): void
    {
        $this->expectOutputString('bar');

        print 'baz';
    }
}
$ phpunit OutputTest
PHPUnit latest.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.

表格 2.1 中列举了用于对输出进行测试的各种方法

表格 2.1 测试输出的方法

方法 含义
void expectOutputRegex(string $regularExpression) 设置输出预期为输出应当匹配正则表达式 $regularExpression
void expectOutputString(string $expectedString) 设置输出预期为输出应当与 $expectedString 相等。
bool setOutputCallback(callable $callback) 设置回调函数,用来做诸如将实际输出规范化之类的动作。
string getActualOutput() 获取实际输出。

注解:

在严格模式下,本身产生输出的测试将会失败。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号