如何对一般错误进行PHPUnit测试,如;未定义索引“;
假设我有一个非常基本的类:如何对一般错误进行PHPUnit测试,如;未定义索引“;,php,phpunit,Php,Phpunit,假设我有一个非常基本的类: class MyClass { private $_counters = [ 'counter1' => 0, ]; public function plus($counter) { $this->_counters[$counter]++; } } 现在对代码进行了更改,以便在$counter不存在时不会中断: public function plus($counter) {
class MyClass {
private $_counters = [
'counter1' => 0,
];
public function plus($counter) {
$this->_counters[$counter]++;
}
}
现在对代码进行了更改,以便在$counter不存在时不会中断:
public function plus($counter) {
if (array_key_exists($counter, $this->_counters)) {
$this->_counters[$counter]++;
}
}
对于可能导致抛出“未定义索引”错误的回归,我将如何对此进行测试
仅仅用一个不存在的$计数器调用函数plus()
就足够了吗?当一切正常时,什么也不会发生,但是如果一个回归删除了array\u key\u exists()
例如,检查,就会抛出“undefined index”
我对单元测试非常陌生,所以我是否错过了更好的方法来测试这种情况?编写一个测试用例而不断言一些东西感觉有点奇怪。创建一个测试,用一些不存在的东西调用plus()
,如您所说的foo
虽然测试未抛出未定义索引
通知并不是您真正要测试的。这指定类包含数组中的所有计数器。这是您的类的一个实现细节,您的测试不应该关心它
您可以编写该类,使每个计数器都成为该类的属性。真正需要您决定的是,在plus
方法中使用不存在的计数器时应该发生什么
您的测试应该测试类的行为。因此,对于不存在的计数器,您需要决定应该发生什么。抛出异常、记录消息或什么都没有。创建一个测试,用不存在的东西调用plus()
,如您所说的foo
虽然测试未抛出未定义索引
通知并不是您真正要测试的。这指定类包含数组中的所有计数器。这是您的类的一个实现细节,您的测试不应该关心它
您可以编写该类,使每个计数器都成为该类的属性。真正需要您决定的是,在plus
方法中使用不存在的计数器时应该发生什么
您的测试应该测试类的行为。因此,对于不存在的计数器,您需要决定应该发生什么。引发异常、记录消息或根本不存在任何内容