Heim > Java > javaLernprogramm > Wie kann man Void-Methoden in Mockito effektiv verspotten?

Wie kann man Void-Methoden in Mockito effektiv verspotten?

DDD
Freigeben: 2024-12-07 10:59:11
Original
578 Leute haben es durchsucht

How to Effectively Mock Void Methods in Mockito?

Void-Methoden mit Mockito verspotten

Im Observer-Muster definieren Beobachter normalerweise Methoden mit void-Rückgabetypen. Wenn Sie versuchen, solche Methoden mit Mockito zu verspotten, können Sie auf Herausforderungen stoßen.

Herausforderung: Mocks von Methoden ohne Rückgabewerte werden nicht automatisch ausgelöst. Infolgedessen können Behauptungen im Zusammenhang mit Zustandsänderungen oder Methodenaufrufen in Komponententests fehlschlagen.

Lösung:

Verwenden Sie doThrow(), doAnswer(), doNothing(), oder doReturn() Methoden von Mockito, um das Verhalten von Void-Methoden zu manipulieren.

Zum Beispiel, um eine Ausnahme auszulösen, wenn eine Methode aufgerufen wird:

1

Mockito.doThrow(new Exception()).when(instance).methodName();

Nach dem Login kopieren

Zur Kombination es mit nachfolgenden Aktionen:

1

Mockito.doThrow(new Exception()).doNothing().when(instance).methodName();

Nach dem Login kopieren

Im bereitgestellten Beispiel kann das Verspotten der setState-Methode mithilfe von doAnswer erreicht werden Methode:

1

2

3

4

5

6

7

8

World mockWorld = mock(World.class);

doAnswer(new Answer<Void>() {

    public Void answer(InvocationOnMock invocation) {

      Object[] args = invocation.getArguments();

      System.out.println("called with arguments: " + Arrays.toString(args));

      return null;

    }

}).when(mockWorld).setState(anyString());

Nach dem Login kopieren

Mit dieser Technik können Sie Void-Methoden simulieren, Erwartungen festlegen und Behauptungen ausführen, um deren Verhalten in Ihren Unit-Tests zu überprüfen.

Das obige ist der detaillierte Inhalt vonWie kann man Void-Methoden in Mockito effektiv verspotten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage