Mockito thenReturn gibt dieselbe Instanz
Habe ich diese in Mockito:
when(mockedMergeContext.createNewEntityOfType(IService.class)).thenReturn(new ServiceMock());
Den createNewEntityOfType
Methode sollte immer wieder ein neues ServiceMock
Instanz, aber es gibt zweimal die gleiche Referenz.
Warum die thenReturn
Methode keine return new ServiceMock
?
- Versuchen stubbing mit einem callback
- Danke! Das funktioniert
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
thenReturn
Methode wird immer wieder was an Sie übergeben wird. Der codenew Servicemock()
ausgeführt wird, vor dem Aufruf vonthenReturn
. Die erstelltenServiceMock
ist dann als bestanden zuthenReturn
. DaherthenReturn
hat eine absolute InstanzServiceMock
nicht eine Schöpfung Mechanismus.Wenn Sie brauchen, um eine neue Instanz verwenden thenAnswer
Möchten Sie vielleicht zu überarbeiten, die sich in verschiedene Aussagen zu verstehen, warum das passiert.
Sehen Sie jetzt, warum es nicht funktioniert? 🙂
Es ist immer die Rückgabe der Instanz halten svc, es wird nicht re-evaluieren
new ServiceMock()
jedes mal, wenn die Methode aufgerufen wird.In Java 8 mit Lambda-Ausdrücke können Sie einfach
So einfach ersetzen
.thenReturn(new MyMock());
mit
.thenAnswer(invocation -> new MyMock());