记一次关于 Shared connection to remotehost 的 Ansible问题排查
今天花了几乎一天的时间排查一个 Ansible 连接异常断开的问题。翻遍了几乎所有的帖子都没有找到正确的答案,经过不断的尝试,终于把这个问题搞懂了,特此记录下来,以便能帮助到同样正在被这个问题折磨的人。
记一次关于 Shared connection to remotehost 的 Ansible问题排查
今天花了几乎一天的时间排查一个 Ansible 连接异常断开的问题。翻遍了几乎所有的帖子都没有找到正确的答案,经过不断的尝试,终于把这个问题搞懂了,特此记录下来,以便能帮助到同样正在被这个问题折磨的人。
本文主要讲述如何使用Ansible在Redhat Linux系列上安装golang 19。
原文: How To Write Unit Tests in Go
Author: Tobi Balogun
译者:philoenglish.com团队; 更多资讯可访问philoenglish.com
单元测试是一种软件测试方法, 用于测试代码的最小可测试单元, 通常是函数或方法. 它的目的是确保每个单元都能够按照预期工作, 并且在修改代码时不会破坏现有的功能,它们是Go编程语言的关键部分。
在本教程中,您将创建一个小程序,然后使用Go的测试包和Go test命令对代码运行一系列测试。完成教程后,您将拥有一个可工作的单元测试套件,其中包括一个基于表表格的单元测试、一个覆盖率测试、一项基准测试和一个文档化的示例。
由于项目时间比较紧, 我本来是没有打算写一篇文章来介绍mockery的, 但是无奈网上介绍mockery的文章比数量上较少(截至2023-04-27), 而且很多文章都过期了.
一方面由于golang更新比较快, 网上解释使用go get
安装mockery的, 到了go 1.6以后都安装不了. 另一方面mockery自身更新也比较快, 很多文章介绍的一些用法在新的版本中已经不灵了, 比如生成mock对象的命令选项-name
已经调整为--name
, -dir
的意义也发生了变化等等, 出现了很多差异的地方.
所以本着稳扎稳打的原则, 不得不放慢脚步, 停下来把golang mock这一块的知识库补充完整.
Mockery是一个用于生成Golang接口的Mock的工具. Mockery可以帮助您在测试期间模拟依赖, 以便更轻松地测试代码. Mockery v2是Mocker的最新版本.
我使用golang已经有一段时间了,但直到最近我才终于明白如何在golang测试中进行对象mocking。由于我来自Java,所以在golang中mock对象的方式对我来说并不清楚。这篇文章是我如何达到目前理解的自我记录。在这篇文章中,我使用了来自Testify的mock功能 在阅读这篇这篇文章之前, 读者需要有golang基础。
首先, 我们来创建一个非常简单的服务,如下所示:
GreeterService是一个向用户打招呼的服务。其由两种问候方式:
Greet()根据设置的语言向用户打招呼
GreetDefaultMessage()将使用默认消息向用户打招呼致意,不涉及到语言设置.
在GreeterService内部,Greet()将调用db.FetchMessage(lang),GreetDefaultMessage()将呼叫db.FetchDefaultMessage()。我们可以在真实场景想象的样子,db类是调用真实数据库的类。因此,我们需要在测试中使用mock来避免测试调用实际的数据库。golang中没有class的概念,但我们可以认为struct行为与类是等效的。