在使用PHPUnit进行测试时,如何在使用实现IteratorAggregate接口的Mock类时防止重新声明错误?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在使用PHPUnit进行测试时,如何在使用实现IteratorAggregate接口的Mock类时防止重新声明错误?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含893字,纯文字阅读大概需要2分钟。
内容图文
我正在编写一个依赖于外部类exceptionManager的单元测试.我希望能够预测这个类上的某些特定函数会返回什么,所以我使用的是模拟对象.代码非常简单:
$mockExceptionManager = $this->getMock('exceptionManager');
麻烦的是,我的异常管理器实现了IteratorAggregate接口,这需要一个如下所示的方法:
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接口,并且两者发生了冲突,尽管我不确定.我也尝试使用Iterator接口,但遇到了同样的问题.我怎么能绕过这个?
解决方法:
我在模拟对象上禁用了自动加载功能,解决了这个问题.
$mockExceptionManager = $this->getMockBuilder('exceptionManager')
->disableAutoload()
->getMock();
内容总结
以上是互联网集市为您收集整理的在使用PHPUnit进行测试时,如何在使用实现IteratorAggregate接口的Mock类时防止重新声明错误?全部内容,希望文章能够帮你解决在使用PHPUnit进行测试时,如何在使用实现IteratorAggregate接口的Mock类时防止重新声明错误?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。