Heim >Java >javaLernprogramm >Wie verspotte ich eine einzelne statische Methode und gebe mit PowerMock ein benutzerdefiniertes Objekt zurück?
Beim Verspotten statischer Methoden in Java kann es sein, dass Sie eine bestimmte Methode selektiv stubben und ein Objekt zurückgeben müssen benutzerdefiniertes Objekt. PowerMock bietet die notwendige Funktionalität, um dies zu erreichen.
Um statische Methoden zu verspotten, müssen Sie zunächst statisches Mocking für die Zielklasse mit PowerMockito.mockStatic() aktivieren. Allerdings kann die dieser Methode zugewiesene Standardantwortstrategie zu Typkonfliktfehlern führen, wenn die Klasse mehrere statische Methoden mit unterschiedlichen Rückgabetypen enthält.
Stattdessen sollten Sie die eine verwenden -argument-Überladung von mockStatic(), um statisches Mocking zu aktivieren, und verwenden Sie dann PowerMockito.when() und thenReturn(), um das gewünschte Verhalten für die einzelne Methode anzugeben. Dadurch können Sie benutzerdefinierte Rückgabewerte für jede Stub-Methode definieren.
Stellen Sie sich eine Klasse mit zwei statischen Methoden vor, von denen eine einen String und die andere einen int zurückgibt:
class ClassWithStatics { public static String getString() { return "String"; } public static int getInt() { return 1; } }
Um die getString()-Methode so zu stoppen, dass sie „Hallo!“ zurückgibt, würden Sie Folgendes tun Folgendes:
PowerMockito.mockStatic(ClassWithStatics.class); when(ClassWithStatics.getString()).thenReturn("Hello!"); System.out.println("String: " + ClassWithStatics.getString());
Beachten Sie, dass die getInt()-Methode nicht explizit stubbed ist. Es wird das Standardverhalten der Rückgabe von 0 verwendet.
Durch die Verwendung der richtigen Kombination aus statischen Mocking- und Stubbing-Techniken können Sie eine einzelne statische Methode selektiv verspotten und ein Objekt in PowerMock zurückgeben. Dadurch können Sie bestimmtes Verhalten statischer Methoden in Ihrem Java-Code testen und isolieren.
Das obige ist der detaillierte Inhalt vonWie verspotte ich eine einzelne statische Methode und gebe mit PowerMock ein benutzerdefiniertes Objekt zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!