在我的 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?