我为测试映射编写了单元测试,它没有任何问题。但是,当我尝试测试通过 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
?