Ich teste ein Objekt, das eine Instanz einer anderen Klasse zurückgibt. Intern ruft diese Klasse require_once
auf. Wenn ich versuche, zu überprüfen, ob das zurückgegebene Objekt von diesem Typ ist, erhalte ich folgende Meldung:
Diese Nachricht verschwindet, sobald ich require_once
in meinem Test vor dem Aufruf von assertInstanceOf
erneut anrufe. Das scheint nicht richtig zu sein. Es scheint, dass PHPUnit intelligent genug sein sollte, um zu wissen, dass die Klasse bereits geladen ist, so dass ich sie nicht erneut laden sollte. Denke ich an dieses Unrecht? Habe ich meine PHPUnit falsch konfiguriert? Gibt es eine Möglichkeit, diese Klasse in meinem Test nicht erneut zu benötigen?
Ihr Gerät könnte dem ähnlich sein:
%Vor%Dies ist in Ordnung, außer hier. Hinweis: Die phpunit-Methode heißt VOR Ihrem Objekt. Da Sie bereits erwähnt haben, bedeutet Ihr Objekt intern bereits eine require_once-Methode, bis Ihre Methode aufgerufen wurde. "MyOtherClass" bleibt als undefinierte Klasse. Genau das ist passiert. PHPunit-Funktion bereit zu überprüfen mit 'MyOtherClass' und fand es nicht definiert!
Das eigene require_once des Objekts wurde nie aufgerufen. Deshalb müssen Sie vorher selbst anrufen. Es ist ähnlich, wenn Sie eine Anweisung wie true == $returnObject instanceOf MyOtherClass
verwenden, die den gleichen Fehler zurückgibt, da beim Parsing von PHP die Klassendefinition nicht gefunden wurde.
Achten Sie darauf, den vollständigen Namespace zu verwenden:
%Vor%