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

Wie kann man Void-Methoden in Mockito effektiv verspotten?

DDD
DDDOriginal
2024-12-07 10:59:11528Durchsuche

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:

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

Zur Kombination es mit nachfolgenden Aktionen:

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

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

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());

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!

Stellungnahme:
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