ホームページ > バックエンド開発 > Golang > Google App Engine でデータストア クエリを確実にテストするにはどうすればよいですか?

Google App Engine でデータストア クエリを確実にテストするにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-07 15:46:15
オリジナル
655 人が閲覧しました

How Can I Reliably Test Datastore Queries in Google App Engine?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート