首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >戈朗应用程序接口测试错误“应用程序引擎: NewContext通过了未知的http.Request”

戈朗应用程序接口测试错误“应用程序引擎: NewContext通过了未知的http.Request”
EN

Stack Overflow用户
提问于 2016-10-29 06:56:35
回答 2查看 996关注 0票数 3

我正在使用appengine和golang开发简单的RESTful API。当我使用goapp启动服务时,代码工作得很好,我开始编写单元测试函数来测试API端点,我在这里受到了惊慌错误appengine: NewContext passed an unknown http.Request的打击。当我运行goapp test时,我会得到这个错误。

因为某种原因,我无法传递我创建的请求并将其传递给appengine.NewContext()

下面是代码的片段。

代码语言:javascript
运行
复制
body := strings.NewReader("")

request, err := http.NewRequest("GET", "endpoint url", body) //inst.NewRequest("GET", goalUrl, body) //
if err != nil {
    t.Error(err)
}
t.Log(request)

c := appengine.NewContext(request) // ERROR: appengine: NewContext passed an unknown http.Request

我创建了一个简单可复制代码。你能帮我做这个吗?或者有人在appengine上有他们的golang项目,并且有单元测试功能来测试端点,我想看看他们的代码.

这是我发布的gitlab问题,它包含了问题的所有必要细节,以及示例和详细的错误消息。谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-09 23:48:48

对延迟答复表示歉意。我自己也在研究解决方案

下面是解决go应用程序单元测试问题的方法:完整的解决方案代码可以在这个github回购分支机构上找到。

在*_test.go文件中,我使用了以下内容。

  • Httptest.NewServer(.)若要创建测试服务器的新实例,请执行以下操作。还用于捕获用于准备请求对象的服务的基本url。
  • aetest.NewContext()为测试目的创建一个新的上下文
  • Http.NewRequest(.)创建新请求
  • 大猩猩的context.Set(.)若要将键(“上下文”)、值(上述步骤中创建的上下文)分配给上面创建的请求,请执行以下操作
  • httptest.NewRecorder()一个新的记录器来保存结果
  • Http.Handler.ServeHTTP(.)传递记录和请求。用于发出API请求。

对于每个API处理程序代码,我没有直接使用appengine.NewContext创建新的上下文,而是在下面的sudocode中描述了代码

代码语言:javascript
运行
复制
using the gorilla's context.GetOk(..), check 
    IF the received request object has the key "Context"
    THEN using value of that key as the context
    ELSE derive context using appengine.NewContext(r)

我已经将可重用的功能封装到一个名为风测试的单独库中,并在代码中使用了它。

有了这个设置,我就可以运行goapp测试来启动单元测试。有关解决方案的完整详细信息,请参阅解码

下面是帮我找到这个解决方案的博客。非常感谢马克。用MUX和高阶函数在GOOGLE应用引擎中测试GO HTTP处理程序

票数 2
EN

Stack Overflow用户

发布于 2016-10-29 07:42:46

NewContext航班HTTP请求中派生出上下文,即已在其中注册的上下文。

由于您正在创建一个内部应用程序包所不知道的新请求,所以它非常恐慌。

这个包还提供了一个RegisterTestRequest函数,但是在主要文档中没有提到它,所以YMMV。我没有这方面的经验。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40316822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档