我正在尝试模拟以下函数:
// Class ObjClass
public void updateColumn(long id, MyObj myObj, String errorLog) throws Exception {
try {
MyObj2 obj2 = entityManager.find(MyObj2.class, id);
obj2.setStatus(myObj);
obj2.setTime(System.currentTimeMillis());
obj2.setErrorLog(errorLog);
entityManager.persist(obj2);
}
catch (Exception e) {
//some stuff...
}
}
我的测试类代码如下所示:
@Mock
private EntityManager entityManager;
@InjectMocks
private ObjClass objClass;
@Mock
private MyObj2 myObj2;
Mockito.when(entityManager.find(MyObj2.class, id)).thenReturn(myObj2);
ObjClass.updateColumn(id, myObj.SUCCESS, null);
在这里,当测试代码通过并到达MyObj2 obj2 = entityManager.find(MyObj2.class, id);
obj2在这里为null,但是,在调试时,在我的测试方法到达此类之前,obj2具有来自测试类代码@Mock private MyObj2 myObj2;
的模拟值
有人可以建议可能出错的地方吗?使用Mockito。
另外,我想在 updateColumn 方法中模拟setter并验证它们。有人可以帮助那些吗?