如何对一般错误进行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
方法中使用不存在的计数器时应该发生什么

您的测试应该测试类的行为。因此,对于不存在的计数器,您需要决定应该发生什么。引发异常、记录消息或根本不存在任何内容