AppEngine Objectify Java Unit Test выдает странную ошибку кэша сеанса, как описано ниже.
Тестовый пример:
private final LocalServiceTestHelper helper = new LocalServiceTestHelper(
new LocalDatastoreServiceTestConfig());
protected Closeable session;
@Before
public void setUp() throws Exception {
helper.setUp();
ObjectifyService.setFactory(new ObjectifyFactory());
ObjectifyService.register(UserData.class);
session = ObjectifyService.begin();
}
@After
public void tearDown() throws Exception {
session.close();
helper.tearDown();
}
@Test
public void testUserDataQuery throws Exception {
...
saveUserData();
...
getUserData();
...
}
Вызов 1:
UserData saveUserData {
...
UserData userData = (UserData) ofy().load().key(key).now();
...
// UserData is modified, the modifications are not stored in datastore,
// as those are temporary.
return userData;
}
Вызов 2:
UserData getUserData {
...
UserData userData = (UserData) ofy().load().key(key).now();
...
// Return the datastore saved UserData object.
return userData;
}
Когда выполняется тест модульного теста, изменение, выполненное в вызове saveUserData
, отображается в запросе getUserData
.Несмотря на то, что был вызван ofy().load()
, UserData
не загружается из хранилища данных, а обслуживается из кэшированной записи.
Я попытался ofy().clear()
вызвать очистить кэш сеанса.Это не исключает ошибки во всех случаях.
Это происходит только в среде модульного тестирования, а не на сервере разработки или производства.