我目前正在尝试测试我的一段代码,该代码在放入新实体之前对数据存储运行查询,以确保不会创建重复项。我编写的代码在应用程序的上下文中运行良好,但我为该方法编写的测试失败了。似乎我无法通过测试包上下文中的查询访问放入数据存储区的数据。
一种可能性可能在于goapp test读取的输出:Applying all pending transactions and saving the datastore。这行在调用 get 和 put 方法后打印出来(我用日志语句验证了这一点)。
我尝试关闭上下文并为不同的操作创建一个新的上下文,但不幸的是,这也无济于事。下面是一个简单的测试用例,它放入一个对象,然后对其运行查询。任何帮助,将不胜感激。
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)
}
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")
}
}
叮当猫咪
慕村225694
相关分类