【发布时间】:2011-12-06 05:49:57
【问题描述】:
这是我的问题。
我有一个正在测试几个类的测试套件。我的类都使用依赖注入。
我有一个名为 scheduleHandler 的类,它通过了所有测试。然后我的另一个类 ruleHandler 有一个需要 scheduleHandler 实例的方法。我不想传入真正的 scheduleHandler 所以我尝试创建一个模拟 scheduleHandler 来注入。
我遇到的问题是,因为 scheduleHandler 类是在上面的 ruleHandler 套件中测试的,所以当创建模拟时我得到:-
PHP Fatal error: Cannot redeclare class scheduleHandler
如果我不使用测试套件,单独运行测试,一切都很好。
有人知道解决这个问题的方法吗?
【问题讨论】:
-
$mockScheduler = $this->getMock('scheduleHandler');
-
如果我更改测试套件中的顺序,它会起作用: $this->addTestSuite('scheduleHandlerTest'); $this->addTestSuite('ruleHandlerTest');很奇怪....
-
你能放一个 var_dump(class_exists('scheduleHandler', false));请在 $this->getMock 调用之前?只是看看我的假设是否有任何优点
-
你能确认
var_dump(get_class($this->getMock('scheduleHandler')))给你类似scheduleHandlerTest_<random hash>的东西 -
@Mike B:是的,我确实得到了结果:- object(Mock_scheduleHandler_47ab6dd0)#208 (3) { ["invocationMocker:protected"]=> NULL ["_observer:private"]=> 数组(0) { } ["_db:private"]=> NULL }