为什么 mapper returns 为空?

Why mapper returns null?

问题:为什么 mapper returns 为空?

任何人都可以解释为什么我的 mapper(mapstruct) returns 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

谢谢:)

它 return 为空,因为您有一个 @Spy。这意味着 Mockito 会将实现包装在它自己的一个实例中,然后调用方法(如果它为 null,则方法将 return null)。

如果您希望侦测或模拟应用程序上下文中可用的 bean,您可能应该使用 Spring Boot 中的 @SpyBean@MockBean