别名模拟在测试类

时间:2016-01-28 09:58:07

标签: php laravel laravel-4 phpunit mockery

我在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

任何想法如何解决这个问题的人?

1 个答案:

答案 0 :(得分:1)

尝试使用AspectMock,它应该模拟静态方法:https://github.com/Codeception/AspectMock

无论如何,此问题表明您的代码无法测试。您应该考虑重构它,而不是使用需要模拟的静态调用。