【发布时间】:2013-04-17 10:18:03
【问题描述】:
我正在测试一个返回另一个类的实例的对象。在内部,该类调用require_once。但是,当我尝试检查返回的对象是否属于该类型时,我会收到以下消息:
InvalidArgumentException: Argument #1 of PHPUnit_Framework_Assert::assertInstanceOf() must be a class or interface name
在调用assertInstanceOf 之前,我在测试中再次调用require_once 后,此消息就会消失。这似乎不对。似乎 PHPUnit 应该足够聪明,可以知道该类已经加载,所以我不必再次加载它。我想错了吗?我的 PHPUnit 配置错误吗?有没有办法避免在我的测试中再次要求这个类?
【问题讨论】:
-
require_once是在类本身内还是在类文件中、在类外部但在加载类文件时加载的必要条件? -
assertInstanceOf('MyClass')不是assertInstanceOf(new MyClass)。确保您传递的是字符串而不是类的实例。 -
我已经在传递一个字符串
-
显示你正在做断言的代码。
instanceof不需要加载类,也不需要自动加载,但也许 PHPUnit 采用的方法可以。 -
在我的例子中,我必须指定类及其命名空间:
$this->assertInstanceOf('Symfony\Component\HttpFoundation\RedirectResponse', $client->getResponse());