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