方法 Mockito.when().thenReturn() 和 Mockito.doreturn().when() 不


    @InjectMocks
    private UserServiceImpl userService;
    @Mock
    private UserRepository  mockUserRepository;

    //private UserServiceImpl userServiceImpl;
    @Before
    public void initMocks() throws Exception {
        MockitoAnnotations.initMocks(this);
        mockUserRepository = Mockito.mock(UserRepository.class);
    }
    @Test
    public void testCreateUser() {
        User user = createUser();
        Mockito.doReturn(user).when(mockUserRepository).findByEmail(user.getEmail());       
        Mockito.when(mockUserRepository.save(user)).thenReturn(user);
        userService.createUser(user);
    }
private User createUser() {
        User user = new User();
        user.setFirstName("Shreya");
        user.setLastName("Mahajan");
        user.setEmail("shreya.mahajan@nitorinfotech.com");
        user.setRole("admin");
        user.setPassword("shreya123");
        return user;
    }

这是我的实际服务方法。 在测试时,它给我的变量为空 现有的用户和响应

@Override
    public ResponseVO createUser(User user) {
        ResponseVO responseVO = new ResponseVO();
        User existingUser = userRepository.findByEmail(user.getEmail());
        if(user.getEmail() != null){
            if(existingUser != null){
                responseVO.setStatusCode("500");
                responseVO.setMessage("user Already Exists");
            }else{              
                User response = userRepository.save(user);
                if(response == null){
                    responseVO.setStatusCode("400");
                    responseVO.setMessage("Failure");                       
                }else{
                    responseVO.setStatusCode("200");
                    responseVO.setMessage("Success");       
                }
            }           
        }
        return responseVO;
    }

我正在尝试编写一个测试用例并模拟方法 findByEmail(( 和 save((,但在模拟时我没有收到 thenreturn(( 和 doreturn(( 中提到的用户对象作为回报。

任何人都可以帮忙。

您可以尝试以下方法:

请删除mockUserRepository = Mockito.mock(UserRepository.class);作为冗余。

而不是

Mockito.doReturn(user).when(mockUserRepository).findByEmail(user.getEmail()); 

这样做

Mockito.doReturn(user).when(mockUserRepository).findByEmail(Mockito.any()); 

最新更新