在我的 WebApp 中,我使用了 MyBatisGenerator 来生成映射器接口。我有一个类 UserService 如下:
public class UserService {
    @Autowired
    UserMapper userMapper;
    public int create(UserParams userParams) {
        User user = new User();
        user.setFirstName(userParams.getFirstName());
        user.setLastName(userParams.getLastName());
        user.setUserName(userParams.getUserName());
        user.setGender(userParams.getGender());
        user.setInstitutionName(userParams.getInstitutionName());
        userMapper.insertSelective(user);
        int userId = user.getUserId();//line 10 in method.
        return userId;
     }
}
我写了一个测试类如下:
@RunWith(MockitoJUnitRunner.class)
public class UserServiceTest extends SpringBootHelloWorldTests {
    @InjectMocks
    UserService service;
    @Mock 
    UserMapper userMapper;
    @Test
    public void testUserService_create(){
        UserParams userParams=new UserParams();
        int i=service.create(userParams);
        assertNotEquals(i,0);
    }       
}
当我执行这个测试类时,我收到一个错误,因为在UserService创建方法中的类中 - 第 10 行。我得到的NullPointerException是userId对象user的null。
我知道不可能模拟方法局部变量的事实。
如果我UserService正常运行(在 WebApp 中),该userMapper.insertSelective方法会填充userId传递给该方法的用户。
我们如何模拟userMapper.insertSelective方法以便我可以将其配置为userId在我的测试类测试方法的用户对象中填充 a?