php エディターの Youzi が、Golang を使用して単体テストの依存関係注入を作成する方法に関する記事を提供します。ソフトウェア開発では、単体テストは重要な部分であり、依存関係の挿入は、単体テストをより適切に実行するのに役立つ一般的に使用される設計パターンです。この記事では、テスト可能なコードをより簡単に作成できるように、Golang を使用して依存関係注入を実装する方法を簡単に紹介します。一緒に探検しましょう!
例えばユーザーAPIを作成したい このような依存性注入構造を持つ
リーリー次に、ユーザー作成 API の単体テストを作成したいと考えていますが、実際にデータベースと対話したりシミュレーションしたりしたくありません。 userUseCase にはリポジトリが必要なので、SaveUserToDB 関数用にモックの userRepository を作成することになります。
これは正しい使用方法ですか?
func Bootstrap(config *BootstrapConfig) { // setup repositories userRepository := repository.NewUserRepository(config.Log) // setup producer userProducer := messaging.NewUserProducer(config.Producer, config.Log) // setup use cases userUseCase := usecase.NewUserUseCase(config.DB, config.Log, config.Validate, userRepository, userProducer) // setup controller userController := http.NewUserController(userUseCase, config.Log) routeConfig := route.RouteConfig{ App: config.App, UserController: userController, } routeConfig.Setup() }
依存関係の注入では、実際に依存関係を注入する必要があります。 Bootstrap
は依存関係を作成しているため、これは依存関係の注入ではないと言えます。テストで Bootstrap
を使用する場合、これは依存関係の注入ではありません。
したがって、func Bootstrap(config *BootstrapConfig)
を少なくとも func Bootstrap(config *BootstrapConfig, userRepository *repository.User)
に変更する必要があります。
次に、テストで mockRepo
を Bootstrap
に渡します。
Bootstrap
は依存関係を作成すべきではないため、userProducer
、userUseCase
などに適用する必要があります。
以上がGolang を使用して依存関係注入を含む単体テストを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。