Golang を使用して依存関係注入を含む単体テストを作成する方法

PHPz
リリース: 2024-02-11 15:42:08
転載
367 人が閲覧しました

如何使用 Golang 创建单元测试依赖注入

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) に変更する必要があります。

次に、テストで mockRepoBootstrap に渡します。

リーリー

Bootstrap は依存関係を作成すべきではないため、userProduceruserUseCase などに適用する必要があります。

以上がGolang を使用して依存関係注入を含む単体テストを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!