해결된 질문
20.01.23 20:47 작성
·
274
0
안녕하세요. 지난번 질문에 상세히 답해주셔서 감사합니다.
추가로 ModelMapper 테스트 관련해서 문의드립니다.
기선님의 강의를 듣고 ModelMapper를 사용해보려고 하는데, 기존에 Mockito를 사용해서 테스트하던 부분이 ModelMapper를 적용하면서 Mocking이 잘 안되고 있습니다. 어떤 부분이 잘못되었는지 확인 부탁드립니다.
@Test
public void When_재료_리스트_조회_Then_정상_반환() {
// Given
Page<MaterialEntity> materialEntityPage = new PageImpl<>(Collections.singletonList(this.materialEntity));
given(this.materialRepository.findAll(any(Pageable.class))).willReturn(materialEntityPage);
Material material = this.modelMapper.map(this.materialEntity, Material.class);
// modelMapper Mocking 코드
given(this.modelMapper.map(any(MaterialEntity.class), eq(Material.class))).willReturn(material);
// When
final Page<Material> materialPage = this.materialService.readMaterialList(PageRequest.of(0, 10));
// Then
assertThat(materialPage.getSize(), is(1));
assertThat(materialPage.getContent().get(0), instanceOf(Material.class));
assertThat(materialPage.getContent().get(0).getName(), is(this.materialEntity.getName()));
assertThat(materialPage.getContent().get(0).getUnitName(), is(this.materialEntity.getUnitEntity().getName()));
}
@Service
public class MaterialServiceImpl implements MaterialService {
private final MaterialRepository materialRepository;
private final UnitRepository unitRepository;
private final ModelMapper modelMapper;
public MaterialServiceImpl(MaterialRepository materialRepository, UnitRepository unitRepository, ModelMapper modelMapper) {
this.materialRepository = materialRepository;
this.unitRepository = unitRepository;
this.modelMapper = modelMapper;
}
@Override
public Page<Material> readMaterialList(Pageable pageable) {
Page<MaterialEntity> materialEntityPage = this.materialRepository.findAll(pageable);
// 테스트를 위해 추가: testMaterial에 null 값이 들어옴
Material testMaterial = this.modelMapper.map(materialEntityPage.getContent().get(0), Material.class);
return materialEntityPage
.map(materialEntity -> modelMapper.map(materialEntity, Material.class));
}
}