Beego端点测试 - 空请求URI

时间:2016-10-17 09:52:10

标签: testing uri beego

这就是我的控制器的样子

func TestGet(t *testing.T) {
    Convey("valid request case", t, func() {
        w := httptest.NewRecorder()
        uri := "/path?key=value"
        r, _ := http.NewRequest("GET", uri, nil)
        beego.BeeApp.Handlers.ServeHTTP(w, r)
        So(w.Code, ShouldEqual, 200)
    })
}

现在,如果我向相应的端点发出请求,例如" http://localhost:8081/path?key=value",我会得到uri的正确值

但如果我用以下代码测试它

<?xml version="1.0" encoding="utf-8"?>
<OrleansConfiguration xmlns="urn:orleans">
  <Globals>
    <SeedNode Address="localhost" Port="10000" />
  </Globals>
  <Defaults>
    <Startup Type="Grains.Startup, Grains" /><!--important-->
    <Networking Address="localhost" Port="10000" />
    <ProxyingGateway Address="localhost" Port="30000" />
  </Defaults>
</OrleansConfiguration> 

控制器中的uri为空字符串

但是, o.Ctx.Request.URL.Path 具有正确的值,即&#39; / path&#39;

1 个答案:

答案 0 :(得分:0)

根据文档https://golang.org/pkg/net/http/#NewRequest

  

NewRequest返回适用于Client.Do或Transport.RoundTrip的请求。要创建用于测试服务器处理程序的请求,请使用ReadRequest或手动更新“请求”字段。

对于golang 1.7,应使用以下方法创建测试https://golang.org/pkg/net/http/httptest/#NewRequest

的请求
  

NewRequest返回一个新的传入服务器请求,适合传递给http.Handler进行测试。