#java #mocking #mockito #powermock
#java #издевательство #mockito #powermock
Вопрос:
Я пытаюсь написать тест с заглушкой, но издевательство над одним из методов происходит не так, как ожидалось.
class A {
public static getInstance(){
return new A();
}
public String getConn(){
return "Hello";
}
}
class B {
public String createConn(){
A instance = A.getInstance();
return instance.getConn();
}
}
Мой тестовый класс:
@RunWith(PowerMockRunner.class)
@PrepareForTest(A.class)
public class TestClassB{
@Spy
B classB = new B();
@Test
public void testConn(){
PowerMockito.mockStatic(A.class);
given(A.getConn()).thenReturn("Welcome");
assertEquals("Welcome", classB.createConn());
}
Я хочу создать тест для класса B, createConn
метод, и когда я получаю соединение, вместо «Привет» я хочу получить «Добро пожаловать», используя mockito?
Комментарии:
1. Не могли бы вы показать нам, что вы пробовали?
2.
@RunWith(PowerMockRunner.class) @PrepareForTest(A.class) public class TestClassB{ @Spy B classB = new B(); @Test public void testConn(){} PowerMockito.mockStatic(A.class); given(A.getConn()).thenReturn("Welcome"); assertEquals("Welcome", classB.createConn()); }
Ответ №1:
Я нашел решение проблемы.
PowerMockito.mockStatic(A.class);
PropertyManager mock = PowerMockito.mock(A.class);
given(A.getInstance()).willReturn(mock);
given(mock.getConn()).willReturn("Welcome");
assertEquals("Welcome", classB.createConn());