Java soapui+;groovy+;mongo db断言问题
对于给定的代码,我尝试连接到mongo db than,按事件类型选择事件,然后为我刚才选择的内容断言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
@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中使用相同的查询手动chceckdb.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循环中的每个迭代一次。谢谢,我错过了:)