iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >如何使用 Golang 创建单元测试依赖注入
  • 925
分享到

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

2024-02-11 15:02:31 925人浏览 独家记忆
摘要

PHP小编柚子为您带来了一篇关于如何使用golang创建单元测试依赖注入的文章。在软件开发中,单元测试是至关重要的一部分,而依赖注入则是一种常用的设计模式,可以帮助我们更好地进行单元测

PHP小编柚子为您带来了一篇关于如何使用golang创建单元测试依赖注入的文章。在软件开发中,单元测试是至关重要的一部分,而依赖注入则是一种常用的设计模式,可以帮助我们更好地进行单元测试。本文将简明扼要地介绍如何使用Golang来实现依赖注入,以便我们能够更轻松地编写可测试的代码。让我们一起来探索吧!

问题内容

例如,我想创建一个用户api 具有这样的依赖注入结构

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()
}

然后,我想为用户创建 API 创建一个单元测试,但我不想与数据库进行真正的交互或模拟。由于 userUseCase 需要一个存储库,这意味着我们将为 SaveUserToDB 函数创建一个模拟 userRepository。

使用这样的方法正确吗?

mockRepo.On("SaveUserToDB", mock.Anything, mock.AnythingOfType("*repository.User")).Return(nil)

解决方法

依赖项注入需要实际注入依赖项。 Bootstrap 正在创建其依赖项,因此可以说这不是依赖项注入。如果你在测试中使用了 Bootstrap ,那么这绝对不是依赖注入。

所以你需要将 func Bootstrap(config *BootstrapConfig) 至少更改为 func Bootstrap(config *BootstrapConfig, userRepository *repository.User)

然后,在您的测试中,您将 mockRepo 传递给 Bootstrap

func Bootstrap(config *BootstrapConfig, userRepository *repository.User) {
    // 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()
}

func TestFoo(t *testing.T) {
    mockRepo := mocks.NewUserRepository(config.Log)
    Bootstrap(config, mockRepo)
    mockRepo.On("SaveUserToDB", mock.Anything).Return(nil)
    …
}

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

以上就是如何使用 Golang 创建单元测试依赖注入的详细内容,更多请关注编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: 如何使用 Golang 创建单元测试依赖注入

本文链接: https://www.lsjlt.com/news/563509.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用 Golang 创建单元测试依赖注入
    php小编柚子为您带来了一篇关于如何使用Golang创建单元测试依赖注入的文章。在软件开发中,单元测试是至关重要的一部分,而依赖注入则是一种常用的设计模式,可以帮助我们更好地进行单元测...
    99+
    2024-02-11
  • Golang 函数测试中的依赖注入
    go 中可以通过第三方库实现依赖注入,推荐使用 wire 库。依赖注入模式允许动态注入依赖项,实现测试和生产代码解耦,提升测试可维护性和扩展性。wire 提供一个依赖注入器,可注入模拟依...
    99+
    2024-04-12
    golang 依赖注入 git
  • PHP 单元测试与依赖注入的协同工作
    依赖注入 (di) 可增强单元测试的可测试性,通过将模拟的依赖项注入到类中,而不是在类本身中创建或查找它们。phpunit 框架提供强大的断言库和测试人员,支持使用 di 进行复杂测试。...
    99+
    2024-05-06
    php 单元测试
  • C++ 单元测试中如何模拟外部依赖项?
    在 c++++ 中模拟外部依赖项有三种方法:1. 桩(预定义行为),2. 存根(记录调用),3. 注入(作为参数传递模拟)。通过桩、存根和注入,可以隔离组件并创建健壮的单元测试。 C+...
    99+
    2024-04-24
    单元测试 模拟依赖 c++
  • Angular中如何使用依赖注入
    这篇文章主要介绍了Angular中如何使用依赖注入,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。useFactory、useClass、us...
    99+
    2024-04-02
  • 使用 Echo 路由器在 golang 中为 WS 创建单元测试
    学习知识要善于思考,思考,再思考!今天编程网小编就给大家带来《使用 Echo 路由器在 golang 中为 WS 创建单元测试》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都...
    99+
    2024-04-05
  • ASP.NET Core MVC如何创建控制器与依赖注入
    这篇文章主要介绍“ASP.NET Core MVC如何创建控制器与依赖注入”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“ASP.NET Core MVC如何创...
    99+
    2023-06-29
  • 如何在单元测试期间注入PersistenceContext
    在单元测试期间注入PersistenceContext有多种方式,下面是其中两种常见的方式:1. 使用模拟的PersistenceC...
    99+
    2023-09-27
    单元测试
  • 如何创建 PHP 函数库并使其支持依赖项注入?
    如何创建支持依赖项注入(di)的 php 函数库:创建 composer 包作为函数库。实现函数库功能,如在文件中实现一个问候函数。安装 phpdi 容器并创建容器配置,将函数库类作为工...
    99+
    2024-04-26
    php 依赖项注入 mysql composer
  • Angular中的依赖注入如何使用
    这篇文章主要介绍了Angular中的依赖注入如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Angular中的依赖注入如何使用文章都会有所收获,下面我们一起来看看吧。译者添加:维基百科中指出 -- 在软件...
    99+
    2023-07-04
  • Android ButterKnife依赖注入框架如何使用
    这篇文章主要介绍“Android ButterKnife依赖注入框架如何使用”,在日常操作中,相信很多人在Android ButterKnife依赖注入框架如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作...
    99+
    2023-07-05
  • 如何使用单元测试框架对 Golang 函数进行测试?
    go 中使用单元测试框架进行单元测试:导入 testing 包。编写以 test 为前缀的单元测试函数。使用断言函数(如 assertequal())验证测试结果。运行单元测试(go t...
    99+
    2024-04-16
    golang 单元测试 标准库
  • 如何简单的理解依赖注入详解
    依赖注入(Dependency Injection,简称DI)是一种设计模式,用于解耦代码中的依赖关系。简单来说,依赖注入就是将一个...
    99+
    2023-08-14
    依赖注入
  • 如何在 Golang 单元测试中调试失败的测试?
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-16
  • php中如何使用laravel实现依赖注入
    这篇文章主要介绍“php中如何使用laravel实现依赖注入”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php中如何使用laravel实现依赖注入”文章能帮助大家解决问题。laravel容器包含控...
    99+
    2023-07-04
  • 如何为内存数据存储创建单元测试?
    php小编小新将为您介绍如何为内存数据存储创建单元测试。在开发过程中,单元测试是保证代码质量和功能正确性的重要手段之一。对于内存数据存储,我们可以使用PHPUnit等测试框架来编写相应...
    99+
    2024-02-09
  • 如何在Java中运用依赖注入
    今天就跟大家聊聊有关如何在Java中运用依赖注入,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、C++的诟病C++最遭人诟病的地方就是定义一个类需要写两个文件,一个.h文件和一个....
    99+
    2023-06-15
  • Golang使用ChatGPT生成单元测试实践
    目录前言Part1 easy:单个函数,无复杂依赖Part2 normal :里面有一些外部importPart3 hard:对外部repo进行mock(gomock举例)一些痛点其...
    99+
    2023-03-19
    Golang ChatGPT单元测试 Golang ChatGPT
  • Golang怎么使用ChatGPT生成单元测试
    这篇文章主要介绍“Golang怎么使用ChatGPT生成单元测试”,在日常操作中,相信很多人在Golang怎么使用ChatGPT生成单元测试问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Golang怎么使用C...
    99+
    2023-07-05
  • python单元测试之如何使用pytest
    这篇文章主要介绍python单元测试之如何使用pytest,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、前提准备前提:需要安装pytest和pytest-html(生成html测试报告)pip install p...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作