【问题标题】:Why does this Objectify code returns a list of 1 object instead of 3?为什么此 Objectify 代码返回 1 个对象而不是 3 个对象的列表?
【发布时间】:2018-05-30 07:42:46
【问题描述】:

我正在尝试为使用 Objectify 访问数据存储的 GAE 应用程序设置单元测试框架。此测试是编写的,但在本地环境中执行时失败。

以下是代码:

public class ObjectifyTest {
    private final LocalServiceTestHelper helper =
            new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig(),
                    new LocalMemcacheServiceTestConfig());
     private Closeable ofySession;

     @Before
     public void setUp() {
         helper.setUp();
         ofySession = ObjectifyService.begin();          
     }

     @After
     public void tearDown() {
         ofySession.close();
         helper.tearDown();
     }

     @Test
     public void testApiHandlerGetTrackerTag() {
         Date now = new Date();

         TrackerTag tag1= new TrackerTag();
         tag1.setHash("...");

         TrackerTag tag2= new TrackerTag();
         tag2.setHash("...");

         TrackerTag tag3= new TrackerTag();
         tag3.setHash("...");

         OfyService.ofy().save().entities(tag1, tag2, tag3).now();

         assertEquals(3,OfyService.ofy().load().type(TrackerTag .class).list().size());
     }

}

此测试在 assertEquals(...) 处失败,因为对 Objectify 的调用返回大小为 1 的列表,而不是预期的 3。关于原因有什么想法吗?

【问题讨论】:

  • This 可能对你有帮助。
  • 仍然不知道它为什么会这样。这里有任何 Objectify 专家也可以提供帮助吗?
  • 能否请您发布类 TrackerTag 的代码?

标签: java unit-testing google-app-engine junit objectify


【解决方案1】:

LocalServiceTestHelper 的默认行为是模拟最终一致性。这通常不是您在编写测试时想要的。您可以通过在传递给助手的 LocalDatastoreServiceTestConfig 对象上调用 setApplyAllHighRepJobPolicy() 来强制测试行为具有强一致性。

【讨论】:

  • 会试一试,如果可行,请在此处回复您。谢谢!
猜你喜欢
  • 1970-01-01
  • 2018-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多