Я пытаюсь протестировать класс, в котором используется последний экземпляр класса. Я не понимаю, как создать макет этого конечного объекта (в нашем примере foo). После долгих раскопок я начал использовать powermockito и метод whenNew. Я не уверен, правильно ли я это делаю или нет, так как я новичок в JUnits. Посмотрев на это, я изменил @PrepareForTest
на Sample.class
(ранее это было Foo.class
), и после этого и foo, и koo обнуляются.
Class Foo
public class Foo{
void hello(){
}
}
Образец класса
public class Sample{
private final Foo foo= new Foo();
private Koo koo = new Koo();
String run(){
String strr = koo.something();
return foo.hello();
}
}
Тестовый класс
@RunWith(PowerMockRunner.class)
@PrepareWith({Sample.class})
public class SampleTest{
@InjectMocks
private Sample sample;
@Mock
private Koo koo;
@Test
void run(){
Foo foo = PowerMockito.mock(Foo.class);
PowerMockito.whenNew(Foo.class).withNoArguments.thenReturn(foo);
when(koo.something()).thenReturn("abc");
when(foo.hello()).thenReturn("def");
String check = sample.run();
assertEquals("abc", check);
}
}