Mock не подменяет объект вызова метода
Зависимости
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
код теста
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.junit.jupiter.MockitoExtension;
import static org.mockito.Mockito.*;
@DisplayName("CreditProgramService test")
@ExtendWith(MockitoExtension.class)
@RunWith(MockitoJUnitRunner.class)
class CreditProgramServiceTest {
@Mock
Service someService;
@InjectMocks
CreditProgramService creditProgramService;
@BeforeEach
public void init() {
MockitoAnnotations.initMocks(this);
}
}
@Test
void mytest(){
MyObject myObject = new MyObject();
when(someService.get()).thenReturn(myObject);
creditProgramService.get();
verify(someService, times(1)).get();
}
}
когда доходит до строки creditProgramService.get(); поток выполнения переходит в метод get моего сервиса creditProgramService и внутри метода уже дергает someService.get() который возвращает null вместо myObject, который я указал в условии теста when.
почему так получается?
Ответы (1 шт):
Автор решения: pra_soul_owl
→ Ссылка
@BeforeEach public void init() { MockitoAnnotations.initMocks(this); }
}
это было лишним, и это тоже @ExtendWith(MockitoExtension.class)