2017-12-16 21 views
0

Objectifyを使用してデータストアにアクセスするGAEアプリケーション用のユニットテストフレームワークをセットアップしようとしています。このテストは書かれており、ローカル環境で実行された場合は失敗しました。なぜこのObjectifyコードは3の代わりに1つのオブジェクトのリストを返しますか?

次のコードです:

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()); 
    } 

} 

客観化への呼び出しが理由として代わりに予想3.任意のアイデアで、大きさ1のリストを返すので、このテストはのassertEquals(...)で失敗?

+0

[こちら](https://stackoverflow.com/questions/33738151/how-to-return-a-list-of-custom-objects-on-objectify)が役立つかもしれません。 – vinS

+0

それがなぜそれほど行動するのかについての手がかりはまだありません。ここでObjectifyの専門家も助けてくれますか? – redflour

+0

TrackerTagクラスのコードを投稿してください。 –

答えて

0

デフォルトの動作はLocalServiceTestHelperです。最終的な整合性をシミュレートすることです。これは一般に、テストを書くときにあなたが望むものではありません。ヘルパーに渡すLocalDatastoreServiceTestConfigオブジェクトのsetApplyAllHighRepJobPolicy()を呼び出すことによって、テスト動作を強力な一貫性に強制することができます。

+0

これは試してみて、それがうまくいくとここに戻ってきます。ありがとう! – redflour

関連する問題