>  기사  >  백엔드 개발  >  Golang을 사용하여 종속성 주입으로 단위 테스트를 만드는 방법

Golang을 사용하여 종속성 주입으로 단위 테스트를 만드는 방법

PHPz
PHPz앞으로
2024-02-11 15:42:08348검색

如何使用 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)해야 합니다.

그러면 시험에서 당신은 mockRepo 传递给 Bootstrap.

으아아아

Bootstrap 不应创建任何依赖项,因此您应该将其应用于 userProduceruserUseCase 잠깐

위 내용은 Golang을 사용하여 종속성 주입으로 단위 테스트를 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제