У меня есть следующий класс, где в конструкторе я вызываю другой конструктор для создания поля класса:
public class ClassIWantToTest {
private ClassIWantToMock anotherClass;
public ClassIWantToTest() {
//some stuff
anotherClass = new ClassIWantToMock(); //<-- call constructor to build the field
//some other stuff
}
}
Когда я тестирую класс ClassIWantToTest
, я хочу смоделировать экземплярClassIWantToMock
.
Следовательно, я настроил свой тест следующим образом:
@RunWith(PowerMockRunner.class)
@PrepareForTest(ClassIWantToMock.class)
public class ClassIWantToTest_Test {
@Test
public void myFirstTest() {
ClassIWantToMock myMock = PowerMockito.mock(ClassIWantToMock.class);
PowerMockito.whenNew(ClassIWantToMock.class).withAnyArguments().thenReturn(myMock);
ClassIWantToTest test = new ClassIWantToTest(); //<-- not mocked
}
}
Однако в последней строке кода в тесте (где я делаю new
класса Iхочу проверить), конструктор ClassIWantToMock
все еще вызывается.
Я искал другие примеры переполнения стека (и в документации), но похоже, что это должно быть сделано так.Что я забыл / делаю неправильно?