У меня есть функция, которая возвращает значение java.net.InetAddress.getLocalHost().getHostName()
Я написал тест для своей функции так:
@PrepareForTest({InetAddress.class, ClassUnderTest.class})
@Test
public void testFunc() throws Exception, UnknownHostException {
final ClassUnderTest classUnderTest = new ClassUnderTest();
PowerMockito.mockStatic(InetAddress.class);
final InetAddress inetAddress = PowerMockito.mock(InetAddress.class);
PowerMockito.doReturn("testHost", "anotherHost").when(inetAddress, method(InetAddress.class, "getHostName")).withNoArguments();
PowerMockito.doReturn(inetAddress).when(InetAddress.class);
InetAddress.getLocalHost();
Assert.assertEquals("testHost", classUnderTest.printHostname());
Assert.assertEquals("anotherHost", classUnderTest.printHostname());
}
printHostName
это просто return java.net.InetAddress.getLocalHost().getHostName();
Как мне вызвать getHostName
return anotherHost
для второго утверждения?
Я пытался сделать:
((PowerMockitoStubber)PowerMockito.doReturn("testHost", "anotherHost"))
.when(inetAddress, method(InetAddress.class, "getHostName")).withNoArguments();
PowerMockito.doReturn("testHost", "anotherHost")
.when(inetAddress, method(InetAddress.class, "getHostName")).withNoArguments();
и я попытался использовать решение doAnswer
здесь: Использование Mockito с несколькими вызовами одного и того же метода с одинаковыми аргументами
Но безрезультатно, поскольку testHost
по-прежнему возвращается оба раза.