google-app-engine - aetest.NewContext() 是否需要参数?

标签 google-app-engine go

我正在学习如何为 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 数据存储区的 Go 网络应用程序测试示例?

文档中的示例非常简单,我看不出应该如何进行更复杂的测试。

最佳答案

它说了两件事:

1) 您缺少必需的参数 *aetest.Options

2) 您不能将由 2 个变量组成的结果 aetest.NewContext() 分配给一组 3 个变量。

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

不幸的是,我对文档的访问现在被阻止了。

关于google-app-engine - aetest.NewContext() 是否需要参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43263592/

相关文章:

我可以使用 & 运算符在函数中获取有效指针,即使该函数已在 golang 中返回

戈朗 : fatal error: all goroutines are asleep - deadlock

networking - 如何检测两个 Golang net.IPNet 对象是否相交?

google-app-engine - 如何使用 gcloud-node 在 Google 数据存储上保存超过 1500 字节的文本?

google-app-engine - Google App Engine : Lucene org. apache.lucene.store.LockObtainFailedException:锁定获取超时

java - 从 OpenID 2.0 迁移到 OpenID Connect : cannot use the openid_id to select appengine users

go - 在 Go 中编写通用数据访问函数

recursion - 尝试将 slice 作为参数传递给递归函数时 slice 超出范围 (Go)

java - DataNucleus 增强失败 - Android Studio 中的 GAE

python - 4 月份的 urlfetch 更改和 simpleoauth