玩!框架 1.2.4 - 从 morphia 立即保存
Posted
技术标签:
【中文标题】玩!框架 1.2.4 - 从 morphia 立即保存【英文标题】:Play! framework 1.2.4 - immediate save from morphia 【发布时间】:2012-04-25 06:22:38 【问题描述】:我写了 selenium 测试,即运行时更改对象 mongodb 的属性(使用 morphia 的 save 方法),然后检查此属性是否更改。但结果变量并没有发生。如何立即节省?
%
// 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);
%
Save 方法在测试期间不会更改 MongoDB 中的值。测试结束后保存工作。这是个问题
【问题讨论】:
我使用的是 1.2.4 版本的 Play !框架 嘿!不认为我理解你的问题,预期的结果是什么,你得到的结果是什么? 好的。我有同样的问题***.com/questions/8488565/… 但我不使用 JPA。我使用 Morphia 插件作为游戏框架。 MongoDB中没有事务。 我不知道它的内部原理,但是#selenium
和%..%
这两个块是否有可能按顺序执行?我想当 selenium 测试生成时(首先),groovy 代码会运行,然后才会运行实际的 selenium 测试。 (您可以通过简单地将 Logger.info() 添加到 groovy 代码并在 selenium 代码中添加某种警报来进行检查)
没有。它们按顺序执行。我查过了。
【参考方案1】:
在此处使用WriteConcern
。在执行写入操作(在您的情况下为删除)时,您可以指定“写入关注点”以告诉系统您希望仅在数据(例如)已刷新到磁盘并复制到 X 时才认为写入完成奴隶。
这里是 Morphia 的一个例子:
morpiaDao.delete(company, new WriteConcern(true));
【讨论】:
以上是关于玩!框架 1.2.4 - 从 morphia 立即保存的主要内容,如果未能解决你的问题,请参考以下文章
Spring、Morphia 和 DataAccessException 实现