gpt4 book ai didi

php - 在使用 PHPUnit 进行测试时使用实现 IteratorAggregate 接口(interface)的 Mock 类时如何防止重新声明错误?

转载 作者:可可西里 更新时间:2023-11-01 00:26:36 24 4
gpt4 key购买 nike

我正在编写依赖于外部类 exceptionManager 的单元测试。我希望能够预测此类中的一些特定函数将返回什么,所以我使用了一个模拟对象。代码非常简单:

$mockExceptionManager = $this->getMock('exceptionManager');

问题是,我的异常管理器实现了 IteratorAggregate 接口(interface),它需要一个如下所示的方法:

public function getIterator()
{
return new ArrayIterator($this->exceptions);
}

当我运行单元测试时,出现以下错误:

Fatal error: Cannot redeclare Mock_exceptionManager_ae79bad2::getIterator() in /Applications/MAMP/bin/php5.2/lib/php/PEAR/PHPUnit/Framework/MockObject/Generator.php(170) : eval()'d code on line 297

我感觉 PHPUnit 模拟对象套件也实现了 IteratorAggregate 接口(interface),虽然我不确定,但两者存在冲突。我也尝试使用 Iterator 接口(interface),但遇到了同样的问题。我该如何解决这个问题?

最佳答案

我在解决问题的模拟对象上禁用了自动加载。

$mockExceptionManager = $this->getMockBuilder('exceptionManager')
->disableAutoload()
->getMock();

关于php - 在使用 PHPUnit 进行测试时使用实现 IteratorAggregate 接口(interface)的 Mock 类时如何防止重新声明错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5098050/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com