【问题标题】:Java MongoDB collection.insert returns null for spock unit testJava MongoDB collection.insert 为 spock 单元测试返回 null
【发布时间】:2018-03-04 19:08:04
【问题描述】:

我正在编写一个单元测试用例来验证我的方法 insertToCollection 是否正常工作。

InsertToMongoCollection.java

protected void insertToCollection() {
   collection.insert(recordList);
}

SPOCK:

def "InsertToMongoCollection"() {
   given:
   Record record = new Record()
   record.setId("111")
   Collection collection= Mock()
   InsertToMongoCollection.collection = collection

   when:
   InsertToMongoCollection.addToGroup(record) // this inserts into recordList
   List<Record> result = collection.insertToCollection()

   then:
   result.count() == 1
}

模拟正确完成,recordList 也有 1 条记录。如果我调试并查看。但是当collection.insert被调用时,结果为null。

【问题讨论】:

    标签: java mongodb unit-testing groovy spock


    【解决方案1】:

    insertToCollection 有一个 void 返回类型,所以当你这样做时会返回 null

    List<Record> result = collection.insertToCollection()
    

    更改方法的返回类型以便您可以测试它,或者运行一个假的mongo,并检查记录是否插入

    【讨论】:

    • 我尝试在collection.insertToCollection() 上使用 JAVA 方法保留调试器并尝试手动运行表达式。
    • JAVA: protected void insertGroupToRepository() { List result = domFareRepository.insert(recordList); log.info("结果:{}",result); } [main] INFO com.XXX.XXX - 结果:null
    • 单独尝试了功能测试..并且使用嵌入的mongo运行良好。
    • Ps:fongo 适合这种情况:github.com/fakemongo/fongo/blob/master/README.md
    • 您在 Java 方法中看到 null 的原因是,无论插入是什么,它都可能是另一个 void 方法
    猜你喜欢
    • 2019-10-03
    • 2020-06-14
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多