Überprüfen des Klassentyps eines Mock-Objekts

8

Derzeit teste ich eine Methode, die ein Objekt abruft und prüft, ob dieses Objekt eine Instanz einer Klasse ist, die als Instanzvariable gespeichert ist. Bis jetzt kein Problem.

Aber im Test muss ich Mocks verwenden und einer dieser Mocks ist das Objekt, das an diese Methode weitergegeben wird. Und jetzt wird es schwierig. Lassen Sie uns den Code sehen (ich habe den Code in diesem Test zusammengefasst):

%Vor%

Nun, dieser Test schlägt fehl. Weiß jemand warum? Hat jemand eine Idee, wie ich dieses Problem lösen könnte, indem ich immer noch einen Schein wie im Test verwende? Gibt es vielleicht eine andere Möglichkeit, Objekte mit einer bestimmten Klasse zu vergleichen.

Vielen Dank für die Hilfe.

Beste Grüße

Gerardo

    
Gerardo 07.06.2011, 12:04
quelle

5 Antworten

8

Deine erste Behauptung wird niemals wahr sein - Mockito-Mocks sind eine ganz neue Klasse, also wird ein einfaches equals() niemals funktionieren. Für Tests wie diese erhalten Sie übrigens eine weitaus nützlichere Fehlermeldung, wenn Sie Assert.assertEquals() verwenden, wobei das erste Argument das erwartete Ergebnis ist. z.B.:

%Vor%

Deine zweite Behauptung wäre korrekt, aber du hast die Richtung von isAssignableFrom() durcheinandergebracht (leicht gemacht, der JavaDoc ist mächtig verwirrend) - dreh ihn um und du bist golden:

%Vor%     
millhouse 28.09.2011 04:26
quelle
2
___ qstntxt ___

Derzeit teste ich eine Methode, die ein Objekt abruft und prüft, ob dieses Objekt eine Instanz einer Klasse ist, die als Instanzvariable gespeichert ist. Bis jetzt kein Problem.

Aber im Test muss ich Mocks verwenden und einer dieser Mocks ist das Objekt, das an diese Methode weitergegeben wird. Und jetzt wird es schwierig. Lassen Sie uns den Code sehen (ich habe den Code in diesem Test zusammengefasst):

%Vor%

Nun, dieser Test schlägt fehl. Weiß jemand warum? Hat jemand eine Idee, wie ich dieses Problem lösen könnte, indem ich immer noch einen Schein wie im Test verwende? Gibt es vielleicht eine andere Möglichkeit, Objekte mit einer bestimmten Klasse zu vergleichen.

Vielen Dank für die Hilfe.

Beste Grüße

Gerardo

    
___ answer626111 ___

Ich würde denken, dass instanceof so funktionieren würde, wie Sie es wollen:

%Vor%

Sind Sie sicher, dass Sie das auch testen sollten? Ich weiß nicht, was Sie erreichen wollen, aber es ist schwer zu sagen, aber ich denke, dass dieser Test nicht notwendig ist.

    
___ qstnhdr ___ Überprüfen des Klassentyps eines Mock-Objekts ___ answer7578298 ___

Deine erste Behauptung wird niemals wahr sein - Mockito-Mocks sind eine ganz neue Klasse, also wird ein einfaches %code% niemals funktionieren. Für Tests wie diese erhalten Sie übrigens eine weitaus nützlichere Fehlermeldung, wenn Sie %code% verwenden, wobei das erste Argument das erwartete Ergebnis ist. z.B.:

%Vor%

Deine zweite Behauptung wäre korrekt, aber du hast die Richtung von %code% durcheinandergebracht (leicht gemacht, der JavaDoc ist mächtig verwirrend) - dreh ihn um und du bist golden:

%Vor%     
___ answer37994119 ___

Es gibt eine neue Methode getMockedType in Mockito 2.0 .0, die die ursprünglich in %code% übergebene Klasse zurückgibt. Ich würde empfehlen, diese Methode zu verwenden, da die %code% -Technik nicht in allen Fällen funktioniert.

%Vor%     
___ tag123mocking ___ Mocking und Fake sind Möglichkeiten, Code oder Komponenten zu isolieren, um sicherzustellen, dass Komponententests nur mit der testbaren Code-Einheit ausgeführt werden, ohne andere Komponenten oder Abhängigkeiten einer Anwendung zu verwenden. Verspottung unterscheidet sich insofern vom Fälschen, als ein Schein zur Überprüfung der Ergebnisse eines Tests untersucht werden kann. ___ tag123mockito ___ Mockito ist ein spöttisches Framework für Java. Es wurde von EasyMock inspiriert, zielt jedoch darauf ab, das Probedrucken, die Verifizierung und die Werkzeugausstattung noch weiter zu vereinfachen. ___ answer14871765 ___

Die Mocked-Klasse ist von Ihrer ursprünglichen Klasse abgeleitet, also überprüfen Sie einfach die Superklasse wie folgt:

Assert.assertTrue (adapterEvent.getClass (). getSuperclass (). equals (clazz));

    
___ answer47466245 ___

Um zu testen, ob ein Objekt die Instanz einer erwarteten Klasse zurückgegeben hat, führen Sie die folgenden Schritte aus

%Vor%     
___ tag123instanceof ___ instanceof ist ein Operator, der in einigen objektorientierten Sprachen verfügbar ist, einschließlich Java, PHP und JavaScript. Im Allgemeinen kann der Programmierer überprüfen, ob ein als linker Operand übergebenes Objekt eine Instanz einer durch den rechten Operanden angegebenen Klasse ist. ___
mamboking 07.06.2011 12:25
quelle
1

Es gibt eine neue Methode getMockedType in Mockito 2.0 .0, die die ursprünglich in Mockito.mock(Class) übergebene Klasse zurückgibt. Ich würde empfehlen, diese Methode zu verwenden, da die getSuperClass() -Technik nicht in allen Fällen funktioniert.

%Vor%     
z7sg Ѫ 23.06.2016 14:11
quelle
1

Um zu testen, ob ein Objekt die Instanz einer erwarteten Klasse zurückgegeben hat, führen Sie die folgenden Schritte aus

%Vor%     
Adam 24.11.2017 04:08
quelle
0

Die Mocked-Klasse ist von Ihrer ursprünglichen Klasse abgeleitet, also überprüfen Sie einfach die Superklasse wie folgt:

Assert.assertTrue (adapterEvent.getClass (). getSuperclass (). equals (clazz));

    
lastas 14.02.2013 09:39
quelle

Tags und Links