【问题标题】:i am trying to test below method .But,i am getting null pointer exception我正在尝试测试以下方法。但是,我得到空指针异常
【发布时间】:2019-02-14 11:52:37
【问题描述】:

我已将 null 分配给集合,即 MongoCollection<Document> collection = null;

@Override
public List<Document> viewUserData(String conditionVar, String conditionVal) {
    List<Document> list = new ArrayList<>();
    BasicDBObject whereQuery = new BasicDBObject();
    whereQuery.put(conditionVar, conditionVal);
    FindIterable<Document> userDocuments = collection.find(whereQuery);
    for (Document doc : userDocuments) {
        list.add(doc);
    }
    return list;
}

@Test 
public void ViewUserData(){ 
    List<Document> list = new ArrayList<>(); 
    Document doc1=new Document(); 
    doc1.append("1","bharathi"); 
    list.add(doc1); 
    FindIterable<Document> documents = collection.find(doc1); 
    Mockito.when(collection.find(Mockito.any(BasicDBObject.class)))
        .thenReturn(documents); mdmdaoimpl.viewUserData("1","bharathi");
    verify(collection,times(1)).find(doc1); 
}

测试代码:

@Test public void ViewUserData() { 
  List<Document> list = new ArrayList<>(); 
  Document doc1=new Document(); 
  doc1.append("1","bharathi"); 
  list.add(doc1); 
  FindIterable<Document> documents = collection.find(doc1);
 Mockito.when(collection.find(Mockito.any(BasicDBObject.class))).thenReturn(documents); 
  mdmdaoimpl.viewUserData("1","bharathi"); 
  verify(collection,times(1)).find(doc1); 
}

【问题讨论】:

  • @Test public void ViewUserData(){ List list = new ArrayList();文档 doc1=new Document(); doc1.append("1","bharathi"); list.add(doc1); FindIterable 文档 = collection.find(doc1); Mockito.when(collection.find(Mockito.any(BasicDBObject.class))).thenReturn(documents); mdmdaoimpl.viewUserData("1","bharathi");验证(集合,次(1)).find(doc1); }这是我的测试方法
  • 请阅读“如何创建minimal reproducible example”。然后使用edit 链接改进您的问题(不要通过 cmets 添加更多信息)。
  • 例如:collection是什么?是模拟吗?如果是这样,你在哪里定义它?!所以,请minimal reproducible example。永远不要将更多信息放入 cmets,请更新问题!
  • 而且,错误。集合为空,访问它时您会感到惊讶,它会给您一个 NPE?

标签: java junit mockito


【解决方案1】:
@Test
public void ViewUserData(){

    FindIterable iterable = mock(FindIterable.class);
    MongoCursor cursor = mock(MongoCursor.class);
    Document doc1=new Document("1","bharathi");
    Document doc2=new Document("2","madhavi");
    when(iterable.iterator()).thenReturn(cursor);
    when(cursor.hasNext()) 
      .thenReturn(true)
      .thenReturn(true)
     .thenReturn(false); 
    when(cursor.next())
      .thenReturn(doc1)
      .thenReturn(doc2); 
    Mockito.when(collection.find(Mockito.any(BasicDBObject.class))).thenReturn(iterable);
    mdmdaoimpl.viewUserData("1","bharathi");
    verify(collection,times(1)).find(Mockito.any(BasicDBObject.class));
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多