Как я могу ввести издевательский компонент, который имеет определенное поведение, определенное в класс, который находится под тестированием, но когда он инициирует вызовы конструктора, которые имитируют и выполняют определенные действия против него.Inject mock bean в тестируемый объект
Так, например, у меня есть этот класс, который я хотел бы проверить:
public class A {
@Autowired
private B b;
private String result = null;
public A(int c) {
result = b.calculateStuff(c) + "AA";
}
public String getResult() {
return result + "A";
}
}
Now the test class:
public class ATest{
@Mock
private B b;
@InjectMocks
private A a;
@Before
public void setUp() {
doReturn("String result!").when(B).get(anyInt());
MockitoAnnotations.initMocks(this);
}
public void testGetResult() {
assertEquals(a.getResult(),"String result!AAA");
}
}
Как я могу на самом деле впрыснуть макет в А? Есть ли лучший способ приблизиться к этому?
Вау - спасибо, я не знал, что есть такая аннотация. Это частично отвечает на мой вопрос - дело в том, что я хотел бы высмеять метод в классе B, который будет доступен в методе @PostContstruct. – karruma
Ваши 'Injected Mocks' всегда будут доступны в' @ PostConstruct' :) Вот как я пишу большинство своих классов. Теперь, если вы счастливы, пожалуйста, примите ответ и помогите нам закрыть вопрос. – user2004685