我在A类中使用Mockery创建了一个别名模拟,以模拟对我想要测试的类中的一些公共静态方法的调用。
在另一个测试类B中,我想使用这些公共静态方法(不是模拟的)但似乎在测试类A中创建的别名模拟在执行测试类B时仍然存在。在测试类B中运行测试时,我得到了这个异常:BadMethodCallException: Static method Helper::formatDate() does not exist on this mock object
,即使不应该在B类中模拟Helper类。
我试图添加:
/**
* @runTestsInSeparateProcesses
* @preserveGlobalState disabled
*/
在测试类中让它们单独运行,但后来我得到了这个错误:
PHPUnit_Framework_Exception: PHP Fatal error: Class 'TestCase' not found
任何想法如何解决这个问题的人?
答案 0 :(得分:1)
尝试使用AspectMock,它应该模拟静态方法:https://github.com/Codeception/AspectMock
无论如何,此问题表明您的代码无法测试。您应该考虑重构它,而不是使用需要模拟的静态调用。