PHPUnit: assertInstanceOf() funktioniert nicht, wenn der Typ als zweites Argument als Nicht-String übergeben wird
Lesezeit: 2 Minuten
Ich muss überprüfen, ob eine Variable ein Objekt von ist Benutzer Art.
Benutzer ist meine Klasse $user mein Objekt
$this->assertInstanceOf($user, User);
Das funktioniert nicht. Ich habe eine Verwendung von undefiniertem konstantem Benutzer – angenommenem ‘Benutzer’.
Das ist teilweise nicht nachvollziehbar. Was ist damit gemeint “Ich habe eine Verwendung von undefiniertem konstantem Benutzer – angenommener ‘Benutzer’.”?
Ich denke, Sie verwenden diese Funktion falsch. Versuchen:
$this->assertInstanceOf('User', $user);
Ab PHP5.5 Sie können diese Syntax auch verwenden $this->assertInstanceOf(User::class, $user);.
– james2doyle
5. Juni 2016 um 23:56 Uhr
Es ist immer eine gute Idee, es zu verwenden ::class wo immer du kannst. Wenn Sie sich an diesen Standard gewöhnt haben, müssen Sie keine FQCNs (vollständig qualifizierte Klassennamen) oder Escape-Backslashes verwenden. Außerdem bieten IDEs eine bessere Funktionalität, wenn sie das wissen User Hier ist nicht nur ein String, sondern eine Klasse.
$this->assertInstanceOf(User::class, $user);
Ich stimme dieser Aussage voll und ganz zu, aber es klingt eher wie ein Kommentar zur akzeptierten Antwort als wie eine separate Antwort …
– rob74
4. August 2020 um 13:59 Uhr
Ich denke, dies ist der erforderliche Weg in PHP Unit 9.5.
Normalerweise verwende ich dies, wenn ich überprüfe, ob die Setter-Methode den Verweis auf sich selbst zurückgibt.
$testedObj = new ObjectToTest();
$this->assertInstanceOf(
get_class($testedObj),
$testedObj->setSomething('someValue'),
'Setter is not returning $this reference'
);
Mit PHP 5.6 könnten Sie die verwenden ::class statische Methode, wie folgt: $this->assertInstanceOf(ObjectToTest::class, $testedObj->setSomething('someValue')
– marcegarba
9. Dezember 2015 um 18:41 Uhr
Eigentlich die SomeClass::class Funktion wurde hinzugefügt PHP5.5
– james2doyle
5. Juni 2016 um 23:57 Uhr
Ja, natürlich, aber das ist kein Problem, denke ich. Dienste, die die PHP-Version 5.4 und niedriger verwenden, machen weniger als 10 % der gesamten PHP-Nutzung aus (laut Composer-Statistiken) seld.be/notes/php-versions-stats-2016-1-edition
– Rafal Kozlowski
7. Juni 2016 um 7:14 Uhr
14410100cookie-checkPHPUnit: assertInstanceOf() funktioniert nicht, wenn der Typ als zweites Argument als Nicht-String übergeben wirdyes
Das ist teilweise nicht nachvollziehbar. Was ist damit gemeint “Ich habe eine Verwendung von undefiniertem konstantem Benutzer – angenommener ‘Benutzer’.”?
– Peter Mortensen
29. Dezember 2022 um 0:53 Uhr