Testing PHPUnit中的expectOutputString或expectOutputRegex
嗨,我正在使用PHPUnit进行单元测试 关于使用expectOutputString/expectOutputRegex方法测试输出,我有一个问题 问题:Testing PHPUnit中的expectOutputString或expectOutputRegex,testing,phpunit,Testing,Phpunit,嗨,我正在使用PHPUnit进行单元测试 关于使用expectOutputString/expectOutputRegex方法测试输出,我有一个问题 问题: function test_myTest() { $this->expectOutputString('testxzxzxzxzxz'); $this->expectOutputString('test'); echo 'test'; } 当我生成单元测试报告时,即使 第一个期望失败了 与assert方
function test_myTest() {
$this->expectOutputString('testxzxzxzxzxz');
$this->expectOutputString('test');
echo 'test';
}
当我生成单元测试报告时,即使
第一个期望失败了
与assert方法不同,如果有一个断言失败,则测试将失败
示例assertTrue:
// this test fail because the first assertTrue fails
function test_myAssert() {
$this->assertTrue(false);
$this->assertTrue(true);
}
看起来这是PHPUnit中缺少的功能
在测试输出时,有人有想法或其他方法来实现我想要的吗?
expectOutputString
存储给定字符串以与整个测试的输出进行比较,但它会覆盖以前存储的任何字符串。换句话说,只有最后一次调用expectOutputString
才有效。您必须构建完整的输出字符串并只调用一次expectOutputString
function test_myTest() {
$this->expectOutputString('testxzxzxzxzxz' . 'test');
echo 'test';
}
上述操作将失败,因为
testxzxzxzxzztest
不等于输出test
得到一个解决方案:我使用ob_get_contents()。顺便说一下,我的输出字符串是json字符串。我使用json_decode(ob_get_contents(),TRUE)将其转换为数组,并在数组的每个元素中使用断言。但是,简单的测试可以使用expectOutputString
。ob\u get\u内容就是这样!搜索这个差不多2个小时。