我正在学习如何为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。
不幸的是,我现在无法访问文档。