Я пытаюсь создать тест junit. Сценарий:Couchbase 2.0 Java SDK 1.1 - Synchronous Add and Views
- нАлАдкА: Я добавляю два 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 документация Я добавляю эти json-документы синхронно y, вызвав get() в возвращаемом объекте Future.
Мой вопрос:
- Есть ли что-то не так с тем, как я подошел к выборке данных из поля зрения только после того, как эти данные были вставлены в БД? Есть ли хорошая практика для решения этой проблемы? И может кто-нибудь объяснить это мне, пожалуйста, что я сделал неправильно?
Спасибо,
Дариуш
В дополнение к PersistTo, чтобы быть уверенным, что на вашем диске вам также нужно вызвать представление, используя stale = false, убедитесь, что индекс обновлен, прежде чем возвращать его в ваше приложение. Взгляните на: http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-views-writing-stale.html –
Спасибо! Кажется, что сочетание обоих решений проблемы. –