返回顶部
首页 > 资讯 > 后端开发 > GO >如何在单元测试 Golang 中模拟 netconf 会话
  • 782
分享到

如何在单元测试 Golang 中模拟 netconf 会话

2024-02-12 17:02:32 782人浏览 八月长安
摘要

问题内容 我正在使用 juniper 的 netconf 包(“GitHub.com/juniper/Go-netconf/netconf”)在我的代码中建立 netconf 会话。

问题内容

我正在使用 juniper 的 netconf 包(“GitHub.com/juniper/Go-netconf/netconf”)在我的代码中建立 netconf 会话。

我想知道如何在单元测试中模拟 netconf 会话。

我的方法是:

func testmyfunction(t *testing.t) {
    getsshconnection = mockgetsshconnection
    got := myfunction()
    want := 123
    if !reflect.deepequal(got, want) {
        t.errorf("error expectation not met, want %v, got %v", want, got)
    }
}
func mockgetsshconnection() (*netconf.session, error) {
    var sess netconf.session
    sess.sessionid = 123
    return &sess, nil
}

当 myfunction() 有一行延迟 sess.close() 并且由于 nil 指针取消引用而引发错误时,就会出现问题

func MyFunction() int {
    sess, err := getSSHConnection() // returns (*netconf.Session, error)
    if err == nil && sess != nil {
        defer sess.Close() -> Problem happens here
        // Calls rpc here and rest of the code here
        
    } 
    return 0
}

那么,我可以对mockgetsshconnection()方法进行哪些更改,以便sess.close()不会抛出错误?

解决方法

nil 指针错误源自 close 函数 当底层transport调用close时。幸运的是 transport 是一个 interface 类型,您可以轻松地在 netconf.session 的实际实例中模拟和使用它。例如像这样:

type MockTransport struct{}

func (t *MockTransport) Send([]byte) error {
    return nil
}

func (t *MockTransport) Receive() ([]byte, error) {
    return []byte{}, nil
}

func (t *MockTransport) Close() error {
    return nil
}

func (t *MockTransport) ReceiveHello() (*netconf.HelloMessage, error) {
    return &netconf.HelloMessage{SessionID: 123}, nil
}

func (t *MockTransport) SendHello(*netconf.HelloMessage) error {
    return nil
}

func (t *MockTransport) SetVersion(version string) {
}

func mockGetSSHConnection() (*netconf.Session, error) {
    t := MockTransport{}
    sess := netconf.NewSession(&t)
    return sess, nil
}

请注意,您要测试的函数当前返回 0 而不是会话的 sessionid 。因此,您应该在测试成功之前修复该问题。

以上就是如何在单元测试 golang 中模拟 netconf 会话的详细内容,更多请关注编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: 如何在单元测试 Golang 中模拟 netconf 会话

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

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

猜你喜欢
  • 如何在单元测试 Golang 中模拟 netconf 会话
    问题内容 我正在使用 juniper 的 netconf 包(“github.com/juniper/go-netconf/netconf”)在我的代码中建立 netconf 会话。 ...
    99+
    2024-02-12
  • 如何在 Go 单元测试中模拟 Pulumi 资源?
    问题内容 我有一个函数,它接受 aws openidconnectprovider pulumi 资源的输入并创建一个 iam 角色,并附加一个包含来自该 oidc 提供商的信息的 a...
    99+
    2024-02-06
  • 如何在 Golang 单元测试中调试失败的测试?
    如何调试 golang 单元测试失败?查看错误消息,以了解失败原因。使用 delve 调试器逐步执行测试,检查变量值和代码流程。添加日志语句,以跟踪测试执行并获取更多信息。 如何在 G...
    99+
    2024-05-16
    golang 单元测试调试
  • C++ 单元测试中如何模拟外部依赖项?
    在 c++++ 中模拟外部依赖项有三种方法:1. 桩(预定义行为),2. 存根(记录调用),3. 注入(作为参数传递模拟)。通过桩、存根和注入,可以隔离组件并创建健壮的单元测试。 C+...
    99+
    2024-04-24
    单元测试 模拟依赖 c++
  • 如何在 Golang 中单元测试文件读写功能?
    在 golang 中单元测试文件读写功能,可以使用 testing 包。具体步骤如下:创建一个函数从文件中读取文本并存储在字符串变量中。使用 t.run() 运行每个子测试。使用 os....
    99+
    2024-05-15
    golang 单元测试 git
  • 单元测试与集成测试在golang函数测试中的区别?
    单元测试和集成测试是两种不同的 go 函数测试类型,分别用于验证单个函数或多个函数的交互和集成。单元测试只测试特定函数的基本功能,集成测试测试多个函数之间的交互和与应用程序其他部分的集成...
    99+
    2024-04-27
    单元测试 集成测试 golang
  • Go 函数单元测试中的模拟技巧
    单元测试中的模拟是在单元测试中创建测试替身以替换外部依赖项的技术,允许隔离和测试特定函数。基本原则是:定义接口、创建模拟、注入模拟。使用 googlemock 模拟,需要定义接口、创建模...
    99+
    2024-04-30
    go 单元测试 git golang
  • PHP 单元测试中的模拟与桩技术
    在 php 单元测试中,模拟和桩技术可用于:模拟:使用假对象替换依赖项,控制行为并验证交互。桩:创建专门的假接口,验证依赖项的调用情况。模拟可使用 $this->getmockbu...
    99+
    2024-05-06
    php 单元测试
  • Go:单元测试中函数的模拟返回值
    在软件开发中,单元测试是一项非常重要的工作,它可以帮助开发者确保代码的质量和可靠性。而在Go语言中,我们可以使用一些库和技术来模拟函数的返回值,以便更好地进行单元测试。本文将由php小...
    99+
    2024-02-10
    go语言 overflow
  • Golang如何实现单元测试中的逻辑层
    本篇内容介绍了“Golang如何实现单元测试中的逻辑层”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!准备工作安装 go insta...
    99+
    2023-07-05
  • Golang如何实现单元测试中的接口层
    这篇文章主要介绍“Golang如何实现单元测试中的接口层”,在日常操作中,相信很多人在Golang如何实现单元测试中的接口层问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Golang如何实现单元测试中的接口层...
    99+
    2023-07-05
  • Golang 函数测试中如何模拟真实环境?
    go 函数测试中模拟真实环境的方法:依赖项注入:使用测试双打替换真实依赖项,隔离函数并控制输入。docker 容器:在隔离环境中运行代码,设置确切的依赖项和配置,访问真实的外部服务。 ...
    99+
    2024-04-16
    golang 函数测试 redis docker
  • 在 golang 中为泛型函数编写单元测试
    php小编香蕉为您带来了一篇关于在Golang中为泛型函数编写单元测试的文章。Golang是一种强类型的编程语言,然而,它在泛型方面的支持却相对较弱。因此,为泛型函数编写单元测试可能会...
    99+
    2024-02-11
  • 探讨如何在Vue3中编写单元测试
    当今前端开发中,Vue.js 已经成为了一个非常流行的框架。随着 Vue.js 的不断发展,单元测试变得越来越重要。今天,我们将探讨如何在 Vue.js 3 中编写单元测试,并提供一些最佳实践和常见的问题及解决方案。一、为什么要进行单元测试...
    99+
    2023-05-14
    前端 JavaScript Vue.js
  • 如何使用单元测试框架对 Golang 函数进行测试?
    go 中使用单元测试框架进行单元测试:导入 testing 包。编写以 test 为前缀的单元测试函数。使用断言函数(如 assertequal())验证测试结果。运行单元测试(go t...
    99+
    2024-04-16
    golang 单元测试 标准库
  • 如何在JavaWeb中编写一个单元测试类测试数据库
    本篇文章给大家分享的是有关如何在JavaWeb中编写一个单元测试类测试数据库,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java有哪些集合类Java中的集合主要分为四类:1、...
    99+
    2023-06-14
  • Android如何在Android Studio当中做junit单元测试
      在开发当中我们经常有这样的需求,比如我想知道以下表达式的结果:   Environment.getExternalStorageDirectory().getPath...
    99+
    2022-06-06
    Android Studio studio junit单元测试 junit 测试 Android
  • 如何在单元测试期间注入PersistenceContext
    在单元测试期间注入PersistenceContext有多种方式,下面是其中两种常见的方式:1. 使用模拟的PersistenceC...
    99+
    2023-09-27
    单元测试
  • 如何在单元测试中比较 Go 切片和 NaN 元素?
    php小编百草在单元测试中比较 Go 切片和 NaN 元素是一个常见的问题。在处理切片时,我们经常需要比较两个切片是否相等,但当切片包含 NaN 元素时,比较会变得复杂。NaN 是一个...
    99+
    2024-02-12
  • 如何在go中实现CLI命令的单元测试
    小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《如何在go中实现CLI命令的单元测试》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,...
    99+
    2024-04-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作