Mockito使用

Maven依赖

<dependency>  
  <groupId>org.mockito</groupId>  
  <artifactId>mockito-core</artifactId>  
  <version>3.1.0</version>  
  <scope>test</scope>  
</dependency>

常用例子

创建mock对象

UserMapper mockUserMapper = Mockito.mock(UserMapper.class);

对返回值stub

Mockito.when(mockUserMapper.getUserByUsername("notExist")).thenReturn(null);

对无返回值的方法stub

// 改变传入参数对象的属性值
Mockito.doAnswer((invocationOnMock) -> {  
    User userArgument = invocationOnMock.getArgument(0);  
    userArgument.setId(userIdGeneratedByDatabase);
    return null;
}).when(mockUserMapper).insertUserBasicInfo(user);

对mock对象进行验证

// 验证是否调用过某方法
Mockito.verify(mockUserMapper).insertUserBasicInfo(user);

// 按调用顺序验证
InOrder inOrder = Mockito.inOrder(mockUserMapper);  
inOrder.verify(mockUserMapper).insertUserBasicInfo(user);  
inOrder.verify(mockUserMapper).insertUserAuthority(userIdGeneratedByDatabase, user.getAuthority());