MapStruct 实例在单元测试时在服务方法中为空

问题描述 投票:0回答:0

我为测试映射编写了单元测试,它没有任何问题。但是,当我尝试测试通过 MapperStruct 进行映射的服务方法时,映射器实例抛出“空指针异常”。这是我正在遵循的方法(在此之前,我已经按照 Stackoverflow 上的建议尝试了许多不同的方法,但是没有一个有效:(

单元测试:

@SpringBootTest // ???
@ExtendWith(MockitoExtension.class)
class CategoryServiceTest {

    @InjectMocks
    private CategoryService service;

    @Mock
    private CategoryRepository categoryRepository;

    @Mock
    public CategoryRequestMapper categoryRequestMapper;


    @ParameterizedTest
    @CsvFileSource(resources = "/data/categories.csv")
    void test_create(Long id, String name, Integer ordinal) {
        CategoryRequest request = new CategoryRequest(id, name, ordinal);

        when(categoryRepository.existsByNameIgnoreCase(request.getName()))
    .thenReturn(false);

        service.create(request);

        // validations ...
    }
}

服务方式:

@Service
@RequiredArgsConstructor
public class CategoryService {

    private final CategoryRepository categoryRepository;
    private final CategoryRequestMapper categoryRequestMapper;

    public CommandResponse create(CategoryRequest request) {

        // !!! categoryRequestMapper is null
        final Category category = categoryRequestMapper.toEntity(request);
        categoryRepository.save(category);
        return CommandResponse.builder().id(category.getId()).build();
    }
}

那么,我是否也应该在测试方法中存根

categoryRequestMapper

java spring-boot unit-testing testing mapstruct
© www.soinside.com 2019 - 2024. All rights reserved.