Google App Engine データストアでのクエリのテスト
データストア内のエンティティの重複を防ぐために、クエリのテストが困難になっています。一意性を確保する必要がある関数。アプリケーションで関数が正しく実行されているにもかかわらず、テストが繰り返し失敗します。
問題を調査したところ、テスト コンテキスト内ではクエリを介してデータストア データにアクセスすることは不可能であることが判明しました。この機能不全は、データストア トランザクションがすぐにコミットされず、一貫性のないクエリ結果が生じることが原因です。
テスト ケースが提供されている場合、テストは合格します。これは、遅延によってトランザクションがコミットされ、データの整合性が保証されるためです。
遅延に依存せずに強力な整合性を確保するには、テスト コンテキストの作成時に StronglyConsistentDatastore: true オプションを使用できます。そうすることで、すべてのクエリの一貫性が強くなり、書き込み操作後すぐにデータにアクセスできることが保証されます。
StronglyConsistentDatastore オプションを使用したテスト ケースの更新バージョンは次のとおりです。
type Entity struct { Value string } func TestEntityQuery(t *testing.T) { c, err := aetest.NewContext(nil) if err != nil { t.Fatal(err) } defer c.Close() c.StronglyConsistentDatastore = true key := datastore.NewIncompleteKey(c, "Entity", nil) key, err = datastore.Put(c, key, &Entity{Value: "test"}) if err != nil { t.Fatal(err) } q := datastore.NewQuery("Entity").Filter("Value =", "test") var entities []Entity keys, err := q.GetAll(c, &entities) if err != nil { t.Fatal(err) } if len(keys) == 0 { t.Error("No keys found in query") } if len(entities) == 0 { t.Error("No entities found in query") } }
以上がGoogle App Engine でデータストア クエリを確実にテストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。