Модульный тест - вводится нулевой смоделированный компонент - PullRequest
0 голосов
/ 25 марта 2020

У меня есть следующий вариант использования:

У меня есть класс 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 ... У меня есть модульные тесты ...

1 Ответ

1 голос
/ 25 марта 2020

Javado c заявляет:"Mockito будет пытаться внедрить mock только с помощью инжектора конструктора, инжектора сеттера или свойства, чтобы. Если какая-либо из стратегий потерпит неудачу, Mockito не будет сообщить об ошибке, т. е. вы должны будете сами предоставить зависимости. "

Следовательно, это произойдет молча.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...