测试本地Go Web服务添加用户失败:新用户未出现在userlist
问题原因排查
1. 进程内存隔离导致测试操作不生效
go run main.go启动的服务和go test运行的测试是两个完全独立的进程,二者内存空间完全隔离。如果你的测试代码是直接调用createUser函数而非通过HTTP请求访问主服务,那修改的只是测试进程内的userCache副本,根本不会影响主服务的缓存;就算测试是发HTTP请求,也要先确认请求真的到达了主服务。
2. 测试的HTTP请求存在错误
检查Test_PostUser的请求逻辑:
- 确认请求URL与主服务的
createUser路由匹配(比如主服务路由是/user,测试里就不能写成/users) - 检查请求方法是否为POST,Content-Type是否设置为
application/json(如果接口要求JSON格式) - 在
createUserhandler中添加日志(比如fmt.Println("收到创建用户请求")),运行测试时观察主服务终端是否有输出,以此验证请求是否真的送达。
3. userCache作用域或修改逻辑错误
- 如果
userCache是main函数内的局部变量,createUserhandler无法访问到这个变量,自然无法修改。需要将其定义为全局变量,或者通过依赖注入(比如将缓存作为参数传给handler)的方式让handler能访问到。 - 检查
createUser内的添加逻辑:是否真的把新用户写入了userCache?比如有没有写错缓存的键名,或者添加后没做任何确认操作?
内容的提问来源于stack exchange,提问作者surfmuggle
相关产品推荐
相关产品推荐

