这是我的问题。
我有一个测试套件正在测试几个类。我的类都使用依赖注入。
我有一个名为schedulehandler的类,它通过了所有测试。然后我的另一个类rulehandler有一个需要schedulehandler实例的方法。我不想传入真正的schedulehandler,所以我试图创建一个模拟schedulehandler来注入。
我遇到的问题是,由于schedulehandler类是在rulehandler上面的套件中测试的,所以在创建mock时,我得到了:
PHP Fatal error: Cannot redeclare class scheduleHandler
如果我不使用测试套件,并且单独运行测试,一切都很好。
有人知道如何避开这件事吗?
最佳答案
到目前为止我最好的猜测是:
var_dump(class_exists('scheduleHandler', false));
为您返回
false
。这意味着这个类还不存在。现在,如果在phpunit试图从中扩展时autoloader找不到类,phpunit将创建它自己的类。如果你以后在这条路上,要求真正的类从某处到类将发生冲突。
要测试这一点,请确保在创建模拟对象之前已经需要了real
scheduleHandler
类。