Google App Engine 데이터 저장소 - 영구 쿼리
테스트 중에 쿼리를 통해 Google App Engine 데이터 저장소의 데이터에 액세스하는 것은 어려울 수 있습니다. 애플리케이션의 성공적인 기능에도 불구하고 테스트는 예상한 데이터를 검색하지 못하는 경우가 많습니다.
이러한 불일치의 잠재적인 이유 중 하나는 데이터 저장소 쿼리의 일관성이 지연되기 때문입니다. 상위 쿼리와 달리 대부분의 쿼리는 새로 추가된 엔터티를 반영하는 데 어느 정도 시간이 필요합니다. "보류 중인 모든 트랜잭션 적용 및 데이터 저장소 저장" 줄은 엔터티가 추가되고 쿼리된 후 테스트 프레임워크가 대기 중인 트랜잭션을 적용하고 있음을 나타냅니다.
따라서 엔터티 생성 직후 실행되는 쿼리는 이러한 트랜잭션을 캡처하지 못할 수 있습니다. 변경사항이 보류 중입니다. 이 문제를 해결하려면 다음과 같은 몇 가지 옵션이 있습니다.
다음은 지연 접근 방식을 사용하여 테스트 코드의 수정된 버전입니다.
type Entity struct { Value string } func TestEntityQuery(t *testing.T) { c, err := aetest.NewContext(nil) if err != nil { t.Fatal(err) } defer c.Close() key := datastore.NewIncompleteKey(c, "Entity", nil) key, err = datastore.Put(c, key, &Entity{Value: "test"}) if err != nil { t.Fatal(err) } // Delay to allow for consistency time.Sleep(100 * time.Millisecond) 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!