我正在测试一个返回另一个类的实例的对象.在内部,该类调用require_once.但是,当我尝试检查返回的对象是否属于该类型时,我收到以下消息:
InvalidArgumentException: Argument #1 of PHPUnit_Framework_Assert::assertInstanceOf() must be a class or interface name
在调用assertInstanceOf之前,我在测试中再次调用require_once时,此消息消失了.这似乎不对.似乎PHPUnit应该足够聪明,知道该类已经加载,所以我不应该再次加载它.我在想这个错吗?我的PHPUnit配置错了吗?有没有办法避免在我的测试中再次要求这门课程?
您的单位可能类似于:
$this->assertInstanceOf('MyOtherClass',$this->object->someFunctionReturnsOtherClass());
这是好的,除了这里,注意:PHPunit方法被称为BEFORE你的对象.既然你说过,你的对象已经在内部执行了require_once意味着在你的方法被调用之前,’MyOtherClass’仍然是一个未定义的类.这正是发生的事情. PHPunit函数准备使用’MyOtherClass’进行检查,发现它未定义!
对象自己的require_once甚至从未调用过.这就是为什么你以前必须自己打电话的原因.如果您使用类似于true == $returnObject instanceOf MyOtherClass的语句,它会返回相同的错误,因为在解析PHP时无法找到类定义.