我一直在尝试模拟一个fiber.Ctx,但我一直无法使它工作,我一直得到这个错误:
---失败:测试检查信头(0.00s)死机:运行时错误:内存地址无效或空指针取消引用[已恢复]死机:运行时错误:无效存储器地址或空指针解除引用[信号SIGSEGV:分段违规代码= 0x 1地址= 0x 0 pc= 0x 12085 f0]
我尝试测试的代码:
检查邮件头.go
package middleware
import "github.com/gofiber/fiber/v2"
func CheckHeaders(c *fiber.Ctx) error {
headers := c.GetReqHeaders()
if headers["headerValue"] == "true"{
return c.Next()
} else {
return c.SendStatus(401)
}
}
检查信头_测试.go
package middleware
import (
"testing"
"github.com/gofiber/fiber/v2"
)
func TestCheckHeaders(t *testing.T) {
type args struct {
c *fiber.Ctx
}
fiberContext := fiber.Ctx{}
tests := []struct {
name string
args args
wantErr bool
}{
{name: "test 1",
args: args{c: &fiberContext},
wantErr: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if err := CheckHeaders(tt.args.c); (err != nil) != tt.wantErr {
t.Errorf("CheckHeaders() error = %v, wantErr %v", err,tt.wantErr)
}
})
}
}
1条答案
按热度按时间dced5bon1#
您可以使用
fiber.Ctx
结构中需要使用的方法创建自己的接口,并为该接口创建mock。之后,您将把
fiber.Ctx
作为Ctxer
接口的实现来处理,这样您就可以使用https://github.com/golang/mock对其进行模拟,并在测试中使用该模拟。看起来像这样