我使用带有自定义上下文的回声框架:
ApiContext struct {
echo.Context
UserID int64
UserRole string
}
我的中间件:
e.Use(func(h echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
cc := &common.ApiContext{c, 0, ""}
return h(cc)
}
})
我的处理程序:
func (app *App) listEntity(c echo.Context) error {
ctx := c.(*ApiContext) // error!
....
}
我的测试:
func TestlistEntity(t *testing.T){
e := echo.New()
req := httptest.NewRequest(echo.GET, "/", nil)
rec := httptest.NewRecorder()
c := e.NewContext(req, rec)
c.SetPath("/api/v1/entity/list")
if assert.NoError(t, EntityList(c)) {
assert.Equal(t, http.StatusOK rec.Code)
}
}
我收到了这个错误:
恐慌:接口转换:echo.Context 是 *echo.context,而不是 *common.ApiContext
在处理函数类型断言中
如何正确编写测试?附言。这种方法工作正常。