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
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.:
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:
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
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.
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%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%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));
Um zu testen, ob ein Objekt die Instanz einer erwarteten Klasse zurückgegeben hat, führen Sie die folgenden Schritte aus
%Vor% 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.
Tags und Links instanceof mocking mockito