web-dev-qa-db-fra.com

PHPUnit: assertInstanceOf () ne fonctionne pas

Je dois vérifier si une variable est un objet de type utilisateur. L'utilisateur est ma classe $user mon objet

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

Cela ne fonctionne pas, j'ai une utilisation constante de l'utilisateur non défini - supposé "utilisateur"

Merci d'avance pour votre aide

55
user1173169

http://apigen.juzna.cz/doc/sebastianbergmann/phpunit/function-assertInstanceOf.html

Je pense que vous utilisez mal cette fonction. Essayer:

$this->assertInstanceOf('User', $user);
111
Mantas

C'est toujours une bonne idée d'utiliser ::class partout où vous le pouvez. Si vous vous habituez à cette norme, vous n'avez pas à utiliser de FQCN (noms de classe pleinement qualifiés), ni à échapper des barres obliques inverses. De plus, les IDE offrent de meilleures fonctionnalités s'ils savent que User ici n'est pas seulement une chaîne, mais plutôt une classe.

$this->assertInstanceOf(User::class, $user);
30
Rápli András

Ou vous pouvez utiliser quelque chose comme:

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

J'utilise généralement cela lorsque je vérifie, c'est-à-dire si la méthode setter renvoie une référence à soi-même.

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