У меня есть следующий вариант использования:
У меня есть класс Test с 3 компонентами, из которых 2 из них вводятся в третий; Я использую JUnit и Mockito для тестирования
public class MyTestClass{
@Mock
SomeService someService;
@Mock
AnotherService anotherService;
@InjectMock
MainService mainService;
@BeforeMethod
public void init() {
initMocks(this);
}
@Test
public void test(){
when(someService.someMethod(any())).thenReturn(something);
when(anotherService.someMethod(any()).thenReturn(something);
mainService.someMainMerhod();
// ...other assert logic
}
}
И здесь у меня есть компонент MainService Spring, который внедрил два других компонента
@Component
public class MainService{
@Autowired
private SomeService someService; //Why here I have null component
private AnotherService anotherService; // and here I have an initialized component ???
public MainService(AnotherService anotherService){
this.anotherService = anotherService;
}
// implementation
}
Вопрос 1 : Почему экземпляр someService имеет значение null, когда я использую и конструктор, и @Autowired?
Вопрос 2 : почему, если я использую только конструктор без @Autowired, и наоборот, все работает, так как я не загружать контекст Spring ... У меня есть модульные тесты ...