このプロジェクト構造を持つGOプロジェクトがあります(各パッケージにこの種のファイルが複数あります)。
- api
- userHandler.go
- userHandler_test.go
- database
- user.go
- user_test.go
user.go 内には、User 構造体と、ユーザーを作成/取得/更新する関数があります (私は GORM を使用していますが、これは問題ではありません)。user_test.go で。
異なるファイルごとに (すべてのデータを削除するか、特定の状態で) DB をクリーンアップしたいので、ファイルごとに 1 つのスイート (Testify を使用) を作成してから、SetupSuite 関数を使用しようとしましたが、動作は決定論的ではないようで、おそらく私は何か間違ったことをしています。
だから私の質問は:
- DB接続を共有する最良の方法はどれですか? グローバル変数を使用するのが最善の選択肢ですか?
- DB にテーブルを一度作成し、各 file_test.go を実行する前にカスタム データで DB を初期化する最良の方法はどれですか?
現在、私も奇妙なバグを抱えています:実行中
go test path/package1
go test path/package2
すべて正常に動作しますが、実行すると (すべてのパッケージをテストするため)
cd path && go test ./...
決定論的ではないように見えるエラーがあります。そのため、DB 接続が適切に処理されていないと推測しています