这是我的问题。
我有一个测试套件正在测试几个类。我的类都使用依赖注入。
我有一个名为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将创建它自己的类。
如果你以后在这条路上,要求真正的类从某处到类将发生冲突。
要测试这一点,请确保在创建模拟对象之前已经需要了realscheduleHandler类。

07-28 06:38