我正在尝试创建一个junit测试。设想:
- 设置:我正在向数据库添加两个 json 文档
- 测试:我正在使用视图获取这些文档
- tearDown:我正在删除两个对象
我的观点:
function (doc, meta) {
if (doc.type && doc.type == "UserConnection") {
emit([doc.providerId, doc.providerUserId], doc.userId);
}
}
这就是我将这些文档添加到数据库并确保“添加”是同步的方式:
public boolean add(String key, Object element) {
String json = gson.toJson(element);
OperationFuture<Boolean> result = couchbaseClient.add(key, 0, json);
return result.get();
}
我添加的 JSON 文档是:
{"userId":"1","providerId":"test_pId","providerUserId":"test_pUId","type":"UserConnection"} {"userId":"2" ,"providerId":"test_pId","providerUserId":"test_pUId","type":"UserConnection"}
这就是我所说的视图:
View view = couchbaseClient.getView(DESIGN_DOCUMENT_NAME, VIEW_NAME);
Query query = new Query();
query.setKey(ComplexKey.of("test_pId", "test_pUId"));
ViewResponse viewResponse = couchbaseClient.query(view, query);
问题:
- 由于从视图中提取的元素数量无效,测试失败。
我的观察:
- 有时测试通过
- 从视图中获取的元素数量不一致(从 0 到 2)
- 当我将这些文档添加到数据库而不是调用 setUp 时,测试每次都通过
- 根据这个http://www.couchbase.com/docs/couchbase-sdk-java-1.1/create-update-docs.html文档,我通过在返回的 Future 对象上调用 get() 来同步添加这些 json 文档。
我的问题:
- 在将数据插入数据库之后,我如何从视图中获取数据有什么问题吗?有没有解决这个问题的好习惯?有人可以向我解释一下我做错了什么吗?
谢谢,
大流士