PHPUnit迫使我在声明

实例之前需要类。我正在测试一个返回另一个类的实例的对象。在内部,该类呼叫require_once。然而,当我尝试检查返回的对象是类型我得到这个消息:PHPUnit迫使我在声明

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的方法被调用的对象之前。既然你说过,你的对象已经在内部做了一个require_once意味着直到你的方法被调用,'MyOtherClass'保持为一个未定义的类。这正是发生了什么事。 Phpunit函数准备使用'MyOtherClass'进行检查,发现它是未定义的!

该对象自己的require_once甚至从未被调用过。这就是为什么你必须以前自己打电话。它类似于如果使用像true == $returnObject instanceOf MyOtherClass这样的语句,它将返回相同的错误,因为解析PHP时找不到类定义。

回答:

一定要使用完整的命名空间:

$this->assertInstanceOf('\Namespace\Subnamespace\MyClass', $obj); 

以上是 PHPUnit迫使我在声明 的全部内容, 来源链接: utcz.com/qa/258180.html

回到顶部