Betrachten Sie die folgende Methode:Wie man Methodenaufruf vortäuschen und Wert zurückgeben, ohne die Methode zu laufen?
public boolean isACertainValue() {
if(context.getValueA() != null && context.getValueA().toBoolean() == true) {
if(context.getType() != null && context.getType() == ContextType.certainType) {
return true;
}
}
return false;
}
ich diesen Code nicht geschrieben hat, ist es wie die Hölle hässlich ist, ist es total kompliziert, aber ich habe mit ihm zu arbeiten.
Jetzt möchte ich eine Methode testen, die auf einen Aufruf dieser Methode angewiesen ist.
Ich dachte, ich mit diesem durch umgehen konnte:
Mockito.when(spy.isACertainValue()).thenReturn(true);
denn das ist der Fall, dass ich testen möchten ist.
Aber es funktioniert nicht, da es immer noch die Methode Körper-Aufruf ist:/
ich nullpointers bekommen oder besser gesagt bekomme ich etwas entlang der Linien von
misusing.WrongTypeOfReturnValue; Boolean kann nicht von getValueA() zurückgegeben werden. getValueA() sollte ValueA zurückkehren
Also versuchte ich (als Behelfslösung) zu tun:
Mockito.when(contextMock.getValueA()).thenReturn(new ValueA());
und Mockito.when(contextMock.getType()).thenReturn(ContextType.certainType);
aber dann bekomme ich eine Nullpointer, die ich scheinen kann nicht der Lage zu sein, debuggen.
Also, wie wird es in diesem Fall gemacht?
das ist genau, wie es zu tun, aber vielleicht gibt es einen Wert in diesem WertA Sie weiter in Ihrem Test benötigen, so sollten Sie das Objekt zurück auch verspotten, nicht nur Rückkehr eine Instanz, die mit einem (Standard) -Konstruktor instanziiert wird. – Stultuske