Играть в! framework 1.2.4 - немедленное сохранение от morphia

Я написал селен-тест, который во время выполнения изменяет свойства объекта mongodb (используя метод сохранения морфии), а затем проверяет, изменилось ли это свойство. Но переменных результатов не происходит. Как сделать немедленную экономию?

%{
    // load models
    // deleted = true
}%

#{selenium}            
    click('link=Delete')
    <!--                 
    SomeClass someObj = SomeClass.findById(id);
    someObj.deleted = true;
    someObj.save();
    -->
#{/selenium}

%{
    models.SomeClass someObj2 = models.SomeClass.find("fieldName", "fieldValue").get();
    boolean expectedStatus = someObj2.deleted;
    org.junit.Assert.assertTrue(expectedStatus);
}%

Метод сохранения не меняет значение в MongoDB во время теста. Сохраните работу после окончания теста. Это проблема


person Adam_Ether    schedule 25.04.2012    source источник
comment
Я использую версию Play 1.2.4! Рамки   -  person Adam_Ether    schedule 25.04.2012
comment
Привет! не думаю, что я понимаю ваш вопрос, каков ожидаемый результат и какой результат вы получаете?   -  person kritzikratzi    schedule 25.04.2012
comment
В порядке. У меня та же проблема stackoverflow.com/questions/8488565/ Но я не использую JPA. Я использую плагин Morphia для игровой платформы. В MongoDB нет транзакций.   -  person Adam_Ether    schedule 25.04.2012
comment
я не знаю внутренностей этого, но возможно ли, что два блока #{selenium} и %{..}% не выполняются по порядку? я бы предположил, что заводной код запускается, когда создается тест селена (сначала), и только после этого будет запущен фактический тест селена. (вы можете проверить, просто добавив Logger.info() в код groovy и какое-то предупреждение в код селена)   -  person kritzikratzi    schedule 25.04.2012
comment
нет. они выполняются по порядку. Я проверил.   -  person Adam_Ether    schedule 26.04.2012


Ответы (1)


Используйте WriteConcern здесь. При выполнении операции записи (удаление в вашем случае) вы можете указать «запрос на запись», чтобы сообщить системе, что вы хотите, чтобы запись считалась завершенной только тогда, когда данные (например) были сброшены на диск и реплицированы на X рабы. Вот пример для Морфии:

morpiaDao.delete(company, new WriteConcern(true));
person vacuum    schedule 15.05.2012