PHPUnit:将类型作为非字符串作为第二个参数传递时,assertInstanceOf()不起作用

c3frrgcw  于 2022-12-28  发布在  PHP
关注(0)|答案(3)|浏览(124)

我需要检查变量是否是User类型的对象。User是我的类$user我的对象

$this->assertInstanceOf($user,User);

这是行不通的,我有一个未定义的常数用户使用-假设'用户'。

xriantvc

xriantvc1#

http://apigen.juzna.cz/doc/sebastianbergmann/phpunit/function-assertInstanceOf.html
我认为您错误地使用了此函数。请尝试:

$this->assertInstanceOf('User', $user);
8ehkhllq

8ehkhllq2#

尽可能地使用::class总是一个好主意。如果你习惯了这个标准,你就不必使用FQCN(完全限定类名),或者转义反斜杠。另外,如果IDE知道这里的User不仅仅是一个字符串,而是一个类,那么它们会提供更好的功能。

$this->assertInstanceOf(User::class, $user);
lrpiutwd

lrpiutwd3#

或者您可以使用类似于:

$this->assertInstanceOf(get_class($expectedObject), $user);

我通常在检查setter方法是否返回对self的引用时使用这个函数。

$testedObj = new ObjectToTest();
$this->assertInstanceOf(
    get_class($testedObj), 
    $testedObj->setSomething('someValue'),
    'Setter is not returning $this reference'
);

相关问题