为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 TestContext 传递给不接受 Gin 上下文作为参数的方法?

如何将 TestContext 传递给不接受 Gin 上下文作为参数的方法?

Go
HUH函数 2022-06-06 15:31:42
我正在为基于 Gin-Gonic 的服务编写测试。我有一个不接受 gin 上下文作为参数的处理程序。例子:func (h *handler) Handler1(isTrue bool) func(*gin.Context) {    return func(c *gin.Context) { .. Do Something }}我想为这个方法编写测试,但我不知道我应该如何将模拟 Gin Context 传递给它。如果我为接受 Gin 上下文作为参数的任何其他方法(如下面的 Ping 方法)执行此操作,我将这样做。func (*handler) Ping(c *gin.Context) {    c.String(http.StatusOK, "Pong")    c.Writer.WriteHeaderNow()} // Method在测试中:handler := NewHandler()recorder := httptest.NewRecorder()mockGinContext, _ := gin.CreateTestContext(recorder)handler.Ping(mockGinContext)对于Handler1,我应该如何将它传递给 TestContext?
查看完整描述

1 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

您应该在测试中使用相同的策略:


var h *handler

h = ... // however you create *handler

recorder := httptest.NewRecorder()

mockGinContext, _ := gin.CreateTestContext(recorder)

// note that you will have to know do you want to test both, 

// or just one of the handlers returned from Handler1

h.Handler1(true)(mockGinContext)

h.Handler1(false)(mockGinContext)


查看完整回答
反对 回复 2022-06-06
  • 1 回答
  • 0 关注
  • 128 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信