Java soapui+;groovy+;mongo db断言问题

Java soapui+;groovy+;mongo db断言问题,java,mongodb,groovy,soapui,ready-api,Java,Mongodb,Groovy,Soapui,Ready Api,对于给定的代码,我尝试连接到mongo db than,按事件类型选择事件,然后为我刚才选择的内容断言 @Grab('org.mongodb:mongodb-driver:3.4.1') import com.mongodb.MongoClient import com.mongodb.MongoClientURI import com.mongodb.DBCollection import com.mongodb.DB import com.mongodb.DBCursor; import

对于给定的代码,我尝试连接到mongo db than,按事件类型选择事件,然后为我刚才选择的内容断言

@Grab('org.mongodb:mongodb-driver:3.4.1')

import com.mongodb.MongoClient
import com.mongodb.MongoClientURI
import com.mongodb.DBCollection
import com.mongodb.DB
import com.mongodb.DBCursor;
import com.mongodb.BasicDBObject
import com.mongodb.DBObject;
import groovy.json.JsonSlurper;

class MongoService {
    private MongoClient mongoClient

    def login = "user"
    def password = "pass"
    def host = "host"
    def port = port
    def databaseName = 'mongodb'

    public MongoClient client() {
        mongoClient = new MongoClient(new MongoClientURI(
               new StringBuilder("mongodb://").
               append(login).append(":").
               append(password).append("@").
               append(host).append(":").
               append(port).append("/").
               append(databaseName).toString()))
                              ;

        return mongoClient
    }

    public DBCollection collection(collectionName) {
        DB db = client().getDB(databaseName)

        return db.getCollection(collectionName)
    }
}

def service = new MongoService(databaseName: 'mongodb') 
def foo = service.collection('events')

BasicDBObject whereQuery = new BasicDBObject();
    whereQuery.put("EventType", "test");

    DBCursor cursor = foo.find(whereQuery);
    while (cursor.hasNext()) {
        log.info(cursor.next())

    }
    def json = cursor.next()

    def slurper = new groovy.json.JsonSlurper()
     def result = slurper.parseText(json)
      assert result.EventType == "test"
我返回soapui在第52行返回java.util.NoSuchElementException错误 在mongodb中使用相同的查询手动chceck
db.getCollection('events')。查找({“EventType”:“test”})

返回1个对象。我不知道该怎么做…:/

问题在于访问光标的方式

在调用
log.info(cursor.next())
和执行
cursor.next()
时,您已经耗尽了游标,没有可访问的元素,这是该异常的原因

DBCursor cursor = foo.find(whereQuery);
while (cursor.hasNext()) {
    log.info(cursor.next())
}
def json = cursor.next()

因此,修复方法是将代码更改为调用
cursor.next()
while循环中的每个迭代一次。

谢谢,我错过了:)