繁体   English   中英

为什么在 Go AppEngine aetest 中使用 datastore.PropertyList 使用 datastore.Put 会得到“无效的实体类型”?

[英]Why do I get "invalid entity type" with datastore.Put using a datastore.PropertyList in a Go AppEngine aetest?

此测试失败, partnermerge_test.go:22: datastore: invalid entity type

package bigdipper

import (
    "testing"

    "appengine/aetest"
    "appengine/datastore"
)

func TestCreateMigrationProposal(t *testing.T) {
    c, err := aetest.NewContext(nil)
    if err != nil {
            t.Fatal(err)
    }
    defer c.Close()
    if _, err := datastore.Put(
            c,
            datastore.NewKey(c, "ORDER", "order-id-1", 0, nil),
            datastore.PropertyList{}); err != nil {
            t.Fatal(err)
    }
}

datastore.Put 函数文档说:

Put 将实体 src 保存到键为 k 的数据存储中。 src 必须是结构指针或实现 PropertyLoadSaver; 如果是结构指针,则将跳过该结构的任何未导出的字段。 如果 k 是不完整的键,则返回的键将是数据存储生成的唯一键。

当尝试将它与 PropertyList 作为src一起使用时,这有点令人困惑。 PropertyList 不实现 PropertyLoadSaver,但 *PropertyList 实现。 在 PropertyList 之前添加 & 以获取指向它的指针可修复此测试。

package bigdipper

import (
    "testing"

    "appengine/aetest"
    "appengine/datastore"
)

func TestCreateMigrationProposal(t *testing.T) {
    c, err := aetest.NewContext(nil)
    if err != nil {
            t.Fatal(err)
    }
    defer c.Close()
    if _, err := datastore.Put(
            c,
            datastore.NewKey(c, "ORDER", "order-id-1", 0, nil),
            &datastore.PropertyList{}); err != nil {
            t.Fatal(err)
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM