私はjunitテストを作成しようとしています。シナリオ:
- セットアップ: 2 つの 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 ドキュメントを同期的に追加しています。
私の質問:
- このデータが DB に挿入された直後に、ビューからデータをフェッチする方法に問題がありますか? この問題を解決するための良い方法はありますか? そして、誰かが私にそれを説明してくれませんか?
ありがとう、
ダリウス