猿问

Go:使用数据库初始化从多个包运行测试

我有一个具有这种项目结构的 GO 项目(每个包中有多个此类文件)。


- api

    - userHandler.go

    - userHandler_test.go

- database

    - user.go

    - user_test.go

在 user.go 中,我有 User 结构和创建/获取/更新用户的函数(我正在使用 GORM 但这不是问题)。在 user_test.go 中。


我想为每个不同的文件清理数据库(删除所有数据或处于某种状态),所以我尝试为每个文件创建 1 个套件(使用 Testify),然后使用 SetupSuite 函数,但是行为似乎不是确定性的,可能我做错了什么。


所以我的问题是:


共享数据库连接的最佳方式是什么?使用全局变量是最好的选择吗?

在每个 file_test.go 运行之前,在数据库中创建表一次然后用自定义数据初始化数据库的最佳方法是什么?

现在我也有一个奇怪的错误:运行


go test path/package1

go test path/package2

一切正常,但如果我运行(用于测试所有包)


cd path && go test ./...

我的错误似乎不是确定性的,这就是为什么我猜测数据库连接没有正确处理


眼眸繁星
浏览 216回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答