PHPUnit 迫使我在断言实例之前需要类

  • 本文关键字:实例 断言 PHPUnit php phpunit
  • 更新时间 :
  • 英文 :


我正在测试一个返回另一个类实例的对象。 在内部,该类调用require_once .但是,当我尝试检查返回的对象是否属于该类型时,我收到以下消息:

InvalidArgumentException: Argument #1 of PHPUnit_Framework_Assert::assertInstanceOf() must be a class or interface name

一旦我在调用assertInstanceOf之前的测试中再次调用require_once,此消息就会消失。这似乎不对。看起来 PHPUnit 应该足够聪明,知道该类已经加载,所以我不必再次加载它。我这是不是想错了?我的 PHPUnit 配置错误吗?有没有办法避免在我的测试中再次要求这门课?

请务必使用完整的命名空间:

$this->assertInstanceOf('NamespaceSubnamespaceMyClass', $obj);

您的单位可能与此类似:

$this->assertInstanceOf('MyOtherClass', 
    $this->object->someFunctionReturnsOtherClass());

这没关系,除了这里,注意:phpunit 方法在你的对象之前被称为。既然你说过,你的对象已经在内部做了一个require_once意味着,直到你的方法被调用,'MyOtherClass'作为一个未定义的类。事实正是如此。Phpunit函数准备使用"MyOtherClass"进行检查,发现它未定义!

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

最新更新