aetest.NewContext()是否需要参数?

时间:2017-04-06 18:54:38

标签: 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测试的Web测试示例?

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

2 个答案:

答案 0 :(得分:1)

它说了两件事:

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

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

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

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

答案 1 :(得分:0)

您使用的是旧版app引擎包(appengine/aetest而不是google.golang.org/appengine/aetest)。较新的版本不需要参数。