1

Mockito を使用して DAO テストを実行していますsaveが、 session: を持つメソッドを呼び出すとSession session = (Session) getEntityManager().getDelegate();、がsession来てnull、何が起こっているのかわかりません。誰かが私を助けることができますか??

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

MyDAOImplMock私のDAO実装のモックであり、私のDAO実装MyDAOImplのインスタンスです。

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

1 に答える 1

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());
}

このようにして、セッションは null になりません! 全てに感謝 !

于 2012-10-25T13:26:02.323 に答える