Я использую Mockito и PowerMockito для создания макета при вызове конструктора:
@RunWith(MockitoJUnitRunner.class)
@PrepareForTest(ConVibe.class)
public class ConVibeTests {
ConVibe task;
@Mock ShapeEffect shapeEffect;
@Test
public void verify_shape_effect() {
whenNew(ShapeEffect.class).withAnyArguments().thenReturn(shapeEffect);
task.call();
// Omitted
}
// Omitted
}
Это вызов конструктора, который я хотел высмеять, находящегося внутри функции call() в классе conVibe:
final ShapeEffect effect = new ShapeEffect(mode, new RepService());
Дело в том, что вещественный конструктор называется (где есть вызов БД, который явно терпит неудачу) вместо создания макета.
Что не так?
Вы используете неправильный бегун - если вы хотите использовать PowerMock, вам нужно использовать PowerMockRunner
:
@RunWith(PowerMockRunner.class)
@PrepareForTest(ConVibe.class)
public class ConVibeTests {