Java junit spring引导应用程序中的模拟

Java 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

我有一个类用户。我想更新用户id。为此,我添加了一个方法,并使用user dto和mapper类将userDto保存到user

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