使用mockito测试DAO会话为空

时间:2012-10-23 13:49:42

标签: mockito

我正在使用Mockito进行DAO测试,但是当我调用具有会话的方法save时:Session session = (Session) getEntityManager().getDelegate();,但sessionnull, 我不知道发生了什么,有人可以帮助我吗?

Mockito.when(MyDAOImplMock.salvarOuEditar(object)).thenReturn(object);
objectTest = MyDAOImpl.salvarOuEditar(object);
Mockito.verify(MyDAOImplMock).salvarOuEditar(object);

MyDAOImplMock是我的DAO实现的模拟,MyDAOImpl是我的DAO实现的一个实例。

@Override
@Transactional(readOnly = false, propagation = Propagation.REQUIRED)
public T salvarOuEditar(T entidade) {
    Session session = (Session) getEntityManager().getDelegate();
    session.saveOrUpdate(entidade);
    return entidade;
}

1 个答案:

答案 0 :(得分:1)

@Autowired
private MyDAOImpl myDAOImpl;

@PersistenceContext
private EntityManager entityManager;

@Before
public void init() {
    myDAOImpl.setEntityManager(entityManager);
    objectTeste = new MyObject();
    object = new MyObject();
}

@Test
    public void testSave() {
    objectTeste = myDAOImpl.salvarOuEditar(object);
    Assert.assertEquals(objectTeste, object);
    Assert.assertEquals(object.getId(), objectTeste.getId());
}

这样会话就不会变为空! 谢谢大家!