如何测试使用中间件的处理程序
How to test handler which uses middleware
如何测试使用中间件的处理程序
我正在尝试对使用中间件但不作为依赖项的处理程序进行单元测试。
我的处理程序代码如下所示:
package handlers
import (
"github.com/gin-gonic/gin"
"github.com/google/uuid"
)
type Handler interface{
FindById(c *gin.Context)
}
type handler struct{}
func (*handler) FindById(context *gin.Context) {
id := context.MustGet("id").(uuid.UUID)
// do something with `id`...
}
以及中间件的代码:
package middlewares
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/google/uuid"
)
func Id(context *gin.Context) {
id, err := uuid.Parse(context.Param("id"))
if err != nil {
context.AbortWithStatusJSON(http.StatusBadRequest, gin.H{
"errors": []string{"id is not valid UUID"}
})
return
}
context.Set("id", id)
}
如何模拟:
id := context.MustGet("id").(uuid.UUID)
要测试 handler
结构?
Set 上下文中的键:c.Set("id", uuid)
如何测试使用中间件的处理程序
我正在尝试对使用中间件但不作为依赖项的处理程序进行单元测试。
我的处理程序代码如下所示:
package handlers
import (
"github.com/gin-gonic/gin"
"github.com/google/uuid"
)
type Handler interface{
FindById(c *gin.Context)
}
type handler struct{}
func (*handler) FindById(context *gin.Context) {
id := context.MustGet("id").(uuid.UUID)
// do something with `id`...
}
以及中间件的代码:
package middlewares
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/google/uuid"
)
func Id(context *gin.Context) {
id, err := uuid.Parse(context.Param("id"))
if err != nil {
context.AbortWithStatusJSON(http.StatusBadRequest, gin.H{
"errors": []string{"id is not valid UUID"}
})
return
}
context.Set("id", id)
}
如何模拟:
id := context.MustGet("id").(uuid.UUID)
要测试 handler
结构?
Set 上下文中的键:c.Set("id", uuid)