我正在尝试为我使用gorilla/mux、gorm.io和golang-migrate/v4制作的 REST API 应用程序创建集成测试
对于我正在使用的测试testify。
我SetupSuite()
的我integration_Test.go
是这样的:
func (s *ReceiptServiceTestSuite) SetupSuite() {
s.Require().NoError(godotenv.Load("test.env"))
s.Require().NoError(database.Connect())
s.db = database.DB
s.m = database.M
router.HandleRequests()
}
而我router.HandleRequests()
的是这样的:
func HandleRequests() {
router := mux.NewRouter()
router.Use(middleware)
// lots of router.HandleFunc()
http.ListenAndServe(":8080", router)
}
问题是:如果我router.HandleRequests()
从 中删除SetupSuite()
,我所有的数据库测试都会正常运行,但是如果我尝试http.ListenAndServe()
停止测试工作流并且什么也没有发生。
我相信我应该使用 goroutinesrouter.HandleRequests()
以便它可以与测试并行运行,我只是不知道该怎么做。
有关更多信息,这里是项目存储库,我不知道它是否相关,但我正在运行两个 postgres 实例docker-compose
,一个用于运行项目,另一个用于测试。