Mockito создает сервисный уровень тестирования исключений NullPointer - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь выучить мокито, тестируя слой обслуживания, но

CarServiceTest. java

@RunWith(MockitoJUnitRunner.class)
@ContextConfiguration(classes = {CarService.class})
public class CarServiceTest {

@InjectMocks
private CarService carService;

@Mock
private CarRepository carRepository;


@Test
public void getCarDetails_returnsCarInfo() {
    //Mockito.when **** is not able to mock, not sure why.
    Mockito.when(this.carRepository.findByName("prius")).thenReturn(new Car("prius","hybrid"));

    Car expected = new Car("prius", "hybrid");
    //Car expected = carService.getCarDetails("prius");

    Assertions.assertThat(expected.getName()).isEqualTo("prius");
    Assertions.assertThat(expected.getType()).isEqualTo("hybrid");
}

CarService. java

 @Service
 public class CarService {

@Autowired
CarRepository carRepository;

public Car getCarDetails(String name) {
    Car car = carRepository.findByName(name);
    if (car == null) {
        throw new CarNotFoundException();
    }

    System.out.println(car.getName());
    return car;
}

CarRepository. java

@Repository
public class CarRepository {

public Car findByName(String name) {
    if (name.equals("prius")){
        Car car = new Car("prius", "hybrid");
        return car;
    } else {
        throw new CarNotFoundException();
    }
}

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

Оказалось, что я импортировал org.junit.jupiter.api.Test, я перешел на org.junit.Test, и он работал нормально.

0 голосов
/ 25 марта 2020

@InjectMocks не вводится в @Autowired поля. Измените CarService на инжектор конструктора.

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