我编写了一项服务
@Service
public class ConverterService {
private static final Logger LOGGER = LoggerFactory.getLogger(ConverterService.class);
private static final String CONVERT_DTO_TO_ENTITY= "convertToEntity called with DTO: ";
@Autowired
private ModelMapper modelMapper;
/**
* @param userActivityHistoryDto : user activity history object
* @return - Returns UserActivityLog object
* @throws JsonProcessingException - Exception raised
*/
public UserActivityLog convertToEntity(UserActivityHistoryDto userActivityHistoryDto) throws JsonProcessingException {
LOGGER.debug(CONVERT_DTO_TO_ENTITY + userActivityHistoryDto);
final UserActivityLog userActivityLog = modelMapper.map(userActivityHistoryDto, UserActivityLog.class); //getting null in junit
ObjectMapper mapper = new ObjectMapper();
ActivityDescriptionDto obj = userActivityHistoryDto.getActivityDescription();
//Object to JSON in String
String jsonInString = mapper.writeValueAsString(obj);
userActivityLog.setActivityDescription(jsonInString);
return userActivityLog;
}
}
我将相同的对象传递给 Web 服务和测试用例,但在 Web 服务调用中得到 null junit 和完美映射的相同对象。测试用例看起来像
@RunWith(MockitoJUnitRunner.class)
public class ConverterServiceTest {
@InjectMocks
private ConverterService converterService;
@Mock
private ModelMapper modelMapper;
@Test
public void testConvertEntity() throws JsonParseException, JsonMappingException, IOException{
ObjectMapper mapper = new ObjectMapper();
UserActivityHistoryDto userActivityHistoryDto = mapper.readValue(Resources.getResource("CreateUserHistoryLog.json"), UserActivityHistoryDto.class);
UserActivityLog userActivityLog = converterService.convertToEntity(userActivityHistoryDto);
Assert.assertEquals("UPD_COMPY",userActivityLog.getActivityTypeCode().getActivityTypeCode());
Assert.assertEquals("CID",userActivityLog.getKeyId());
Assert.assertEquals("202020",userActivityLog.getKeyValueText());
Assert.assertEquals("I",userActivityLog.getAudienceTypeCode());
Assert.assertNotNull(userActivityLog.getActivityDescription());
}
}
请帮助我知道出了什么问题。
最佳答案
您正在使用模拟对象,因此您需要对方法进行 stub 以说明调用它们时您想要获得的内容。默认情况下,未 stub 的方法通常返回 null。
当您调用 modelMapper 的方法映射时,在测试时您需要类似以下内容:
when( modelMapper.map( anyObject( ), eq(UserActivityHistoryDto.class) ) ).thenReturn( /**What you want to return**/ new userActivityHistoryDto () );
查看文档:Mockito
关于java - 代码工作正常,因为 web 服务在 junit 中出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45028719/