为什么 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());
}
}
谢谢:)
它 return 为空,因为您有一个 @Spy
。这意味着 Mockito 会将实现包装在它自己的一个实例中,然后调用方法(如果它为 null,则方法将 return null)。
如果您希望侦测或模拟应用程序上下文中可用的 bean,您可能应该使用 Spring Boot 中的 @SpyBean
和 @MockBean
。
问题:为什么 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());
}
}
谢谢:)
它 return 为空,因为您有一个 @Spy
。这意味着 Mockito 会将实现包装在它自己的一个实例中,然后调用方法(如果它为 null,则方法将 return null)。
如果您希望侦测或模拟应用程序上下文中可用的 bean,您可能应该使用 Spring Boot 中的 @SpyBean
和 @MockBean
。