Java 当webservice在junit中出现错误时,代码工作正常
我写了一篇文章作为Java 当webservice在junit中出现错误时,代码工作正常,java,spring,junit,junit4,Java,Spring,Junit,Junit4,我写了一篇文章作为 @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 Mod
@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;
}
}
我将同一个对象传递给webservice和测试用例,但在webservice调用中得到空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());
}
}
请帮助我了解出了什么问题。您使用的是一个模拟对象,因此需要存根方法来说明调用它们时希望得到什么。默认情况下,未创建子对象的方法通常返回null 当您调用modelMapper的方法映射时,在测试中,您需要以下内容:
when( modelMapper.map( anyObject( ), eq(UserActivityHistoryDto.class) ) ).thenReturn( /**What you want to return**/ new userActivityHistoryDto () );
请参阅文档:向我们展示堆栈跟踪。您已将ModelMapper声明为模拟。您是否定义了modelMapper.map(…)应该返回什么?