我正在学习如何为Appengine应用创建Golang测试。

文档示例对我来说没有意义。

https://cloud.google.com/appengine/docs/standard/go/tools/localunittesting/reference

文档似乎说您可以创建上下文:= aetest.NewContext()

当我尝试这样做时,出现了aetest.NewContext需要参数的错误。

$ go test -v

./skincare_test.go:12: not enough arguments in call to aetest.NewContext
    have ()
    want (*aetest.Options)
./skincare_test.go:12: assignment count mismatch: 3 = 2
FAIL    _/Users/Bryan/work/gocode/skincarereview [build failed]

skincare_test.go的内容:
package skincare

import (
    "net/http"
    "net/http/httptest"
    "testing"

    "appengine/aetest"
)

func TestIndexHandler(t *testing.T) {
    ctx, done, err := aetest.NewContext()
    if err != nil {
        t.Fatal(err)
    }
    defer done()

    req, err := http.NewRequest("GET", "/", nil)
    if err != nil {
        t.Fatal(err)
    }

    rr := httptest.NewRecorder()
    handler := http.HandlerFunc(root)

    handler.ServeHTTP(rr, req)

    if status := rr.Code; status != http.StatusOK {
        t.Errorf("handler returned wrong status code: got %v want %v",
            status, http.StatusOK)
    }

    expected := "<div>Name"
    if rr.Body.String() != expected {
        t.Errorf("handler returned expected body: got %v want %v",
            rr.Body.String(), expected)
    }
}

通过查看示例代码,我学得最好,在哪里可以找到使用Appengine数据存储的Tests for Go网络应用程序的示例?

文档中的示例是如此简单,以至于我看不到如何进行更复杂的测试。

最佳答案

它说两件事:

1)您缺少必需的参数*aetest.Options
2)您不能将包含2个变量的结果aetest.NewContext()分配给3个变量的集合。

检查函数的输出是什么。我想这只是(context.Context, error)-我怀疑done已以某种方式移至* aetest.Options。

不幸的是,我现在无法访问文档。

10-04 19:08