Почему макет бросает nullpointerexception? - PullRequest
0 голосов
/ 28 декабря 2018

Я хочу смоделировать AddressRepo, который реализует JpaRepository.AddressRepo идет как конструктор в AddressMapper.Я пытаюсь сделать это следующим образом:

public class AddressMapperTest2 {

    GenericMapper<Address, AddressDto> mapper;

    @MockBean
    private AddressRepo addressRepo;

    @Before
    public void setUp() {
        Optional<Address> tmpOptionalAddress = Optional.of(new Address("a", "1b", "c", "00-001"));
        when(addressRepo.findByCityAndStreetAndHouseNumberEtcAndPostalCode(anyString(), anyString(), anyString(), anyString())).thenReturn(tmpOptionalAddress);
        this.mapper = new AddressMapper(addressRepo);
    }

    @Test
    public void testDtoToNewSource() {
        // given
        AddressDto dto = new AddressDto();
        dto.setCity("a").setHouseNumberEtc("1b").setStreet("c").setPostalCode("00-001");

        // when
        Address addressFromDto = mapper.dtoToNewSource(dto);

        // then
        assertEquals("a", addressFromDto.city);
        assertEquals("1b", addressFromDto.houseNumberEtc);
        assertEquals("c", addressFromDto.street);
        assertEquals("00-001", addressFromDto.postalCode);
    }
}

java.lang.NullPointerException at AddressMapperTest2.setUp (AddressMapperTest2.java:27)

1 Ответ

0 голосов
/ 28 декабря 2018

MockBean не является аннотацией Mockito.Это аннотация Spring, говорящая Spring о вставке фиктивного компонента в ваш тест интеграции Spring, выполненный с помощью средства запуска Spring.

Вы пишете простой модульный тест, а не интеграционный тест Spring, запускаемый Spring Runner.Используйте аннотацию @Mock для Mockito (и прочитайте документацию, чтобы понять, как сделать эту аннотацию функциональной), или просто используйте API Mockito:

addressRepo = Mockito.mock(AddressRepo.class);
...