Java junit spring引导应用程序中的模拟
我有一个类用户。我想更新用户id。为此,我添加了一个方法,并使用user dto和mapper类将userDto保存到userJava junit spring引导应用程序中的模拟,java,spring-boot,junit,mockito,Java,Spring Boot,Junit,Mockito,我有一个类用户。我想更新用户id。为此,我添加了一个方法,并使用user dto和mapper类将userDto保存到user public UserDto userUpdate(@RequestBody UserDto userDto){ UserActivityService userActivityService = BeanLocator.getBean(UserActivityService.class); return userActivityService.updateUser
public UserDto userUpdate(@RequestBody UserDto userDto){
UserActivityService userActivityService = BeanLocator.getBean(UserActivityService.class);
return userActivityService.updateUser(userDto);
}
In userActivityService.java:
public UserDto updateUser(UserDto userDto){
User user = mapper.mapUserDto(userDto); //mapper created inside mapper class
return mapper.mapUserEntity(userRepository.save(user));
}
Now writing Junit for this method:
@Test
public void userlist(){
String userType = "ABC";
UserDto userDto = new UserDto();
userDto.setId(1);
userDto.setName(userType);
User user = new User();
user.setId(1);
user.setName(userType);
Mockito.when(mapper.mapUserDto(any())).thenReturn(user);
Mockito.when(mapper.mapUserEntity(any())).thenReturn(userDto);
UserDto userDtos = userActivityService.updateUser(userDto);
Assert.assertNotNull(userDtos); //userDtos null
Assert.assertEquals(userType, userDtos.getName());
}
但是userDtos是空的。我模仿了mapper类。有人能帮我解决这个问题吗。尝试添加when(userRepository.save(any())。然后返回(user)@维布斯也试过了。但是userDtos仍然是空的。您能显示完整的
服务类吗?考试班呢?最好看看您是如何将映射器注入服务的。如果映射器是bean,并且在测试中启动了上下文,那么您应该在它上面使用@MockBean
。