google-app-engine - Gorilla mux 在测试期间返回空白 url 参数

标签 google-app-engine go

下面的代码在运行 appengine 服务器时提取 url 值,但在测试期间 url 变量为空。

对为什么会这样有任何想法吗?

func init() {
    s := scheduleApi{}
    r := NewAERouter()

    r.HandleFunc("/leagues/{leagueId}/schedule", s.get).Methods("GET")

    http.Handle("/", r.router)
}

func (s *scheduleApi) get(c appengine.Context, w http.ResponseWriter, r *http.Request) {

    params := mux.Vars(r)

    fmt.Printf("=======================\n")
    fmt.Printf("URL => %v\n", r.URL)
    fmt.Printf("params => %v\n", params)               // empty map
    fmt.Printf("leageid => %v\n", params["leagueId"])  // blank
    fmt.Printf("=======================\n")
}

测试

func Test_Get(t *testing.T) {
    r, _ := http.NewRequest("GET", "/leagues/99/schedule", nil)
    w := httptest.NewRecorder()

    handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        s := scheduleApi{}
        c, _ := aetest.NewContext(nil)
        s.get(c, w, r)
    })
    handler.ServeHTTP(w, r)

            //...
}

最佳答案

Gorilla mux 需要包含在您的测试中。在您的应用程序代码中,您正在使用 mux 设置路线,但在您的测试中您没有。

这是一个question疯狂处理这个问题。

关于google-app-engine - Gorilla mux 在测试期间返回空白 url 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25704851/

相关文章:

google-app-engine - Appengine 服务器的 IP 地址 block ?

python - Google App Engine 云存储客户端无法安装

go - 如何将我的链码从本地转换为 super 账本结构中的对等体?

go - 我怎么能在编译时出错,而不是运行时。例如 : regexp. 必须编译

go - Terraform - 将 vendor aws-sdk-go 依赖项更新到最新的过程

java - Android Studio 前端客户端 [从设备运行] 未连接到 Google AppEngine 后端

java - Google App Engine - 每当我对 servlet 进行更改时,我都必须重新启动开发服务器

google-app-engine - 如何在 Google App Engine 启动器中保存我的用户帐户和密码?

go - 二进制字符串转十六进制

function - 在 go 中重载函数不起作用