有什么方法可以避免 phpunit 调用模拟对象的构造函数?否则我需要一个模拟对象作为构造函数参数,另一个模拟对象作为构造函数参数,等等。api 似乎是这样的:
getMock($className, $methods = array(), array $arguments = array(),
$mockClassName = '', $callOriginalConstructor = TRUE,
$callOriginalClone = TRUE, $callAutoload = TRUE)
我无法让它发挥作用。它仍然抱怨构造函数参数,即使$callOriginalConstructor
设置为假。
我的构造函数中只有一个对象,它是依赖注入。所以我不认为我在那里有设计问题。
您可以使用getMockBuilder
而不仅仅是getMock
:
$mock = $this->getMockBuilder('class_name')
->disableOriginalConstructor()
->getMock();
请参阅有关的部分《测试双打》 http://phpunit.de/manual/current/en/test-doubles.html in PHPUnit 的文档 http://phpunit.de/manual了解详情。
虽然您可以这样做,但最好不要这样做。您可以重构代码,这样您只需依赖一个接口,而不需要注入具体的类(带有构造函数)。这意味着您可以模拟或存根接口,而不必告诉 PHPUnit 修改构造函数的行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)