【发布时间】:2016-11-03 02:42:18
【问题描述】:
我有一个 PHPUnit 测试循环遍历一组无效值,并断言每个值都被函数正确拒绝。
例如,validateInput 只有在输入为字符串时才应返回 true,否则返回 false。
public function testValidateInput()
{
$obj = new MyClass();
$data = [
null,
42,
21.21,
-24,
-12.12,
false,
array('key' => 'value'),
(object) 'value'
];
foreach ($data as $item){
$this->assertSame(false, $obj->validateInput($item));
}
}
当测试未通过断言时,我只得到行号 - 这对于所有值都是相同的,因为它处于循环中。
1) MyClassTest::testValidateInput Failed asserting that true is identical to false. /home/jeff/MyClass/tests/MyClassTest.php:24
如何确定哪个值未通过断言?
【问题讨论】:
-
如果我没记错的话,可以将最后一个参数作为自定义消息传递,对吗?然后您可以
$this->assertSame(false, $obj->validateInput($item), 'Failed to test ' . $item);以便您在屏幕上收到失败的值。