春、ダービー、JPAを使用しているこのテスト設定があり、更新が機能するかどうかをテストしたいと思います。
私はこれを標準的な方法で行うことはできません。エンティティ オブジェクトを作成し、保持し、オブジェクトを再度検索し、オブジェクト内のフィールドを変更し、再度保持し、変更されたかどうかを確認するために検索を実行します。
このアプローチの問題は、エンティティの新しいインスタンスを取得できないことです。いつも同じです。したがって、常に同じオブジェクトを変更しているため、更新が正しく機能するかどうかはわかりません。そのため、変更が時期尚早に反映されます。
一部のオブジェクトを永続化コンテキストとマージせずに変更し、そのオブジェクトで検索を実行しようとすると、常に同じオブジェクトで動作しているため、変更は既に検索に存在します。
コンテキストを失い、更新が正しく機能していることを実際にテストする方法はありますか?
これが私の現在のコードです:
@Test
public void canUpdate() {
JsonTestEntity entity1 = new JsonTestEntity();
JsonTestEntity entity2 = new JsonTestEntity();
String message = "OmegaCV1";
String message2 = "OmegaCV2";
entity1.setMessage(message);
entity2.setMessage(message2);
em.persist(entity1);
em.persist(entity2);
em.flush();
JsonTestEntity jsonTestEntity = em.find(JsonTestEntity.class, entity2.getId());
assertNotNull("Could not find persisted entity", jsonTestEntity);
assertEquals("Was not same entity", message2, jsonTestEntity.getMessage());
String changeMessage = "Changed message";
jsonTestEntity.setMessage(changeMessage);
JsonTestEntity unChangedEntity = em.find(JsonTestEntity.class, entity2.getId());
assertEquals("Message was prematurely changed", message2, unChangedEntity.getMessage());
em.merge(jsonTestEntity);
JsonTestEntity changedEntity = em.find(JsonTestEntity.class, entity2.getId());
assertEquals("Message was not changed", changeMessage, changedEntity.getMessage());
}