Почему mapper возвращает null? - PullRequest
       45

Почему mapper возвращает null?

0 голосов
/ 01 августа 2020

Вопрос: Почему mapper возвращает null?

Кто-нибудь может мне объяснить, почему мой mapper (mapstruct) возвращает null? Когда я реализую свой собственный картограф, тогда все в порядке.

@RunWith(MockitoJUnitRunner.class)
@SpringBootTest
class CouponServiceTestSuite {
    @InjectMocks
    private CouponService couponService;
    @Mock
    private CouponRepository couponRepository;
    @Spy
    private CouponDto couponDto;
    @Spy
    private CouponMapper couponMapper;


    @Test
    public void testMapper() {
        Coupon coupon = createCoupon();
        CouponDto couponDto = couponMapper.mapToCouponDto(coupon);

        System.out.println(couponDto); // RETURN NULL
    }
@Component
@Mapper
public interface CouponMapper {

    Coupon mapToCoupon(CouponDto couponDto);

    CouponDto mapToCouponDto(Coupon coupon);

    default List<CouponDto> mapToCouponDtoList(List<Coupon> couponList) {
        if (couponList == null) {
            return new ArrayList<>();
        }
        return new ArrayList<>(couponList).stream()
                .map(this::mapToCouponDto)
                .collect(Collectors.toList());
    }
}

https://github.com/kenez92/BetWinner2/blob/CouponServiceTestSuite/src/test/java/com/kenez92/betwinner/service/CouponServiceTestSuite.java

Спасибо :)

1 Ответ

0 голосов
/ 02 августа 2020

Он возвращает null, потому что у вас есть @Spy. Это означает, что Mockito заключит реализацию в собственный экземпляр, а затем вызовет методы (если он равен нулю, он вернет нуль для методов).

Вероятно, вам следует использовать @SpyBean и @MockBean из Spring Boot, если вы хотите, чтобы bean-компоненты, доступные в контексте вашего приложения, отслеживались или высмеивались.

...