Running tool: /usr/local/go/bin/go test -timeout 30s -run ^TestCreateUserAPI$ github.com/ZhangZhihuiAAA/zimplebank/gapi -count=1 -v === RUN TestCreateUserAPI === RUN TestCreateUserAPI/OK /zdata/Github/zimplebank/gapi/rpc_create_user.go:33: Unexpected call to *mockdb.MockStore.CreateUser([context.Background {gyvclh $2a$10$7wUAC1GwMS2Ge5egd3tUven2S91j7GkvcTmNKRiJVWJwSEjzIHCue hzltgv afiptp@email.com}]) at /zdata/Github/zimplebank/gapi/rpc_create_user.go:33 because: there are no expected calls of the method "CreateUser" for that receiver /zdata/Github/zimplebank/gapi/controller.go:243: missing call(s) to *mockdb.MockStore.CreateUserTx(is anything, matches arg {{gyvclh hzltgv afiptp@email.com} <nil>} and password axdvdw) /zdata/Github/zimplebank/gapi/rpc_create_user_test.go:47 /zdata/Github/zimplebank/gapi/controller.go:243: aborting test due to missing call(s) --- FAIL: TestCreateUserAPI (0.10s) --- FAIL: TestCreateUserAPI/OK (0.05s) FAIL FAIL github.com/ZhangZhihuiAAA/zimplebank/gapi 0.102s
The failure point is at below function:
func (e eqCreateUserTxParamsMatcher) Matches(x any) bool { arg, ok := x.(db.CreateUserTxParams) if !ok { return false } err := util.CheckPassword(e.password, arg.HashedPassword) if err != nil { return false } e.arg.HashedPassword = arg.HashedPassword return reflect.DeepEqual(e.arg, arg) }
This is because the arg has a function field, but there's no way in Go to compare two functions:
type CreateUserTxParams struct { CreateUserParams AfterCreate func(user User) error }
So only compare the first field:
func (e eqCreateUserTxParamsMatcher) Matches(x any) bool { arg, ok := x.(db.CreateUserTxParams) if !ok { return false } err := util.CheckPassword(e.password, arg.HashedPassword) if err != nil { return false } e.arg.HashedPassword = arg.HashedPassword return reflect.DeepEqual(e.arg.CreateUserParams, arg.CreateUserParams) }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律