강의

멘토링

로드맵

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của mycat
mycat

câu hỏi đã được viết

Phát triển API REST dựa trên mùa xuân

ModelMapper 테스트 관련 문의

Đã giải quyết

Viết

·

360

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));
    }
}
rest-apispringjava

Câu trả lời 3

0

whiteship님의 프로필 이미지
whiteship
Người chia sẻ kiến thức

새해 복 많이 받으시고 홧팅!

0

mycat님의 프로필 이미지
mycat
Người đặt câu hỏi

다시 보니 제가 잘못 생각하는게 있었네요...말씀대로 주먹구구식으로 여쭤봐서 답을 쉽게 찾으려고 했던것 같습니다.

답변 감사드리고, 새해 복 많이 받으세요.

0

whiteship님의 프로필 이미지
whiteship
Người chia sẻ kiến thức

테스트 코드에서 modelMapper를 모킹하셨는데.. modelMapper가 목 객체인가요?
이런식으로 막히는걸 주먹구구식으로 물어서 해결하시는건 실력 향상에 도움이 되질 않습니다.

Hình ảnh hồ sơ của mycat
mycat

câu hỏi đã được viết

Đặt câu hỏi