我刚刚开始使用PHPUnit并且可以使用所有的assert *方法,但是如果向方法提供了错误的参数,则无法确定如何测试错误抛出 - 例如用{{暗示1}}像这样:
array
然后以public function(array $list) { }
作为参数进行测试。
有人可以提供一个如何测试此类错误的示例吗?
我已经在stackoverflow上查了不少帖子,但无法找到这个特定问题的答案。
修改
好的 - 只是为了让您了解我正在测试的内容 - 这里是ArrayHelper :: removeIfValueIsEmpty()方法:
null
现在测试:
public static function removeIfValueIsEmpty(array $array) {
if (empty($array)) {
return array();
}
return array_filter($array, function($value) {
return !Helper::isEmpty($value);
});
}
这会引发错误:
class ArrayHelperTest extends PHPUnit_Framework_TestCase {
public function testRemoveIfValueIsEmpty() {
$this->assertEmpty(
\Cmd\Helper\ArrayHelper::removeIfValueIsEmpty(null),
'\Cmd\Helper\ArrayHelper::removeIfValueIsEmpty method failed (checking with null as argument)'
);
}
}
答案 0 :(得分:6)
http://phpunit.de/manual/4.1/en/writing-tests-for-phpunit.html#writing-tests-for-phpunit.errors
/**
* @expectedException PHPUnit_Framework_Error
* @expectedExceptionMessage Argument 1 passed to Cmd\Helper\ArrayHelper::removeIfValueIsEmpty() must be of the type array, null given
*/
public function testRemoveIfValueIsEmpty() {
\Cmd\Helper\ArrayHelper::removeIfValueIsEmpty(null);
}