首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试数据访问层

测试数据访问层
EN

Stack Overflow用户
提问于 2017-08-03 20:07:00
回答 1查看 110关注 0票数 0

我的问题是如何测试这个“delete”方法?我不能为消息对象添加ID,因为它是一个生成值。所以我也不能使用findbyID(Integer id)方法。任何帮助都将不胜感激,谢谢!

我的测试

代码语言:javascript
复制
@Test 
public void testDelete(){
    System.out.println("delete");

    Message message = new Message();
   // message.setID(1) -> This is not allowed
    message.setSubject("Subject");
    message.setContent("Content");

    messageDAO.register(message);

    int count = messageDAO.getCount();
    assertEquals("Check if the message has been persisted into db", 1, count);



    messageDAO.delete(1); //returns null

    count = messageDAO.getCount();
    assertEquals("Check if the message has been deleted from db", 0, count);


}

DAO:

代码语言:javascript
复制
@Transactional
public void register(Message message) {
    em.persist(message);
}


@Transactional
public void delete(Integer id) {

 Message m =  getMessageById(id);
 em.remove(em.merge(m));

}

@Transactional
public Message getMessageById(Integer id){
    return em.find(Message.class, id);

}

@Transactional
public int getCount() {

      Query query = em.createNativeQuery("select count(*) from messages");
      int count = ((BigInteger) query.getSingleResult()).intValue();
      return count;
}
EN

回答 1

Stack Overflow用户

发布于 2017-08-07 23:11:45

您可以尝试执行以下操作:

  • 查看em.persist是否返回任何有用的内容,可能是ID或ID为ID的对象
  • 在DAO上编写一个方法,根据@rafaelim建议的主题或内容查找消息
  • 查看em.persist调用

后,消息对象是否设置了ID值

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45483735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档