Ich verwende Mockito
, um einige Tests in meinem Java-Code zu schreiben. In meinem Test habe ich ein reales Objekt, aber ich möchte spotten, was in einer der Methoden passiert, und auf die Methodenargumente zugreifen können.Wie würde ich eine Methode eines realen Objekts verspotten und auf die Argumente der Methode zugreifen?
Wenn ich dies tun:
MyObj spyObj = spy(new MyObj());
doReturn(false).when(spyObj).myMethod(anyObject(), anyObject(), anyList(), anyLong());
Ich kann die Argumente zugreifen und mit ihnen jede Art von Logik zu tun.
Wenn ich jedoch Mockito.when()
verwenden wie so:
when(spyObj.myMethod(anyObject(), anyObject(), anyList(), anyLong())).thenAnswer(invocation -> {
if (invocation.getArguments()[0] == 1) {
// do stuff
return true;
}
return false;
});
das eigentliche Verfahren läuft anstelle der verspottet Methode. Wie könnte ich meinen Test ausführen lassen, meine verspottete Methode und in der Lage sein, auf die Argumente innerhalb der verspotteten Methode zuzugreifen? Vielen Dank!
Nicht mit Mocikto ausgiebig, aber vielleicht kann dies helfen: http://site.mockito.org/mockito/docs/current/org/mockito/Mockito.html#13 und einige Sachen hier: http: //www.vogella .com/tutorials/Mockito/article.html # mockito_spy –
Verwenden Sie doAnswer() .when(), genauso wie Sie doReturn() .when() verwenden. Siehe http://site.mockito.org/mockito/docs/current/org/mockito/Mockito.html#12. –