在Golang中使用Testify mock框架

1. 前言

我使用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行为与类是等效的。

阅读更多

Msys2安装教程

1. 前言

之前一直是使用的Cygwin作为命令行终端, 后来好像是因为Cygwin上的git不兼容还是什么原因, 具体记不太清了, 就安装了git for windows后来终端也就切换到了git bash, 使用了很长一段时间, 后面发现git for window安装不了额外的软件, 使用完整的Linux命令行都是在虚拟机上完成的, 也就一直这样别扭的用着. 今天发现一个可用在windows上使用bash并可以安装额外软件包的方法,特地写文章纪念一下.

阅读更多

安装并配置docker

1. 什么是Docker容器?

Docker是一种轻量级的虚拟化技术,同时是一个开源的应用容器运行环境搭建平台,可以让开发者以便捷方式打包应用到一个可移植的容器中,然后安装至任何运行Linux或Windows等系统的服务器上。相较于传统虚拟机,Docker容器提供轻量化的虚拟化方式、安装便捷、启停速度快。

本文主要讲述如何在Centos 7.9操作系统上安装Docker, 当然本教程也适合RHEL系列的其他Linux发型版本.

阅读更多

Redhat系列yum源介绍

CentOS 默认自带 CentOS-Base.repo 源,但官方源中去除了很多有版权争议的软件,而且安装的软件也不是最新的稳定版。 Fedora 自带的源中也找不到很多多媒体软件,如果需要安装,必需先添加其他源,如 RPMFusion 和 RPMForge 等第三方软件库。

下面鹏叔来一一介绍各种第三方软件库,以下软件库适用于与 RHEL 完全兼容的 linux 发行版

阅读更多

使用WireGuard内网穿透

1. 前言

WireGuard 是由 Jason Donenfeld 等人用 C 语言编写的一个开源 威屁恩 协议,被视为下一代 威屁恩 协议,旨在解决许多困扰 IPSec/IKEv2、Open威屁恩 或 L2TP 等其他 威屁恩 协议的问题。它与 Tinc 和 MeshBird 等现代 威屁恩 产品有一些相似之处,即加密技术先进、配置简单。从 2020 年 1 月开始,它已经并入了 Linux 内核的 5.6 版本,这意味着大多数 Linux 发行版的用户将拥有一个开箱即用的 WireGuard。

阅读更多

如何设计一款App

1. 译者序

这是一篇很好的关于从零开始创建App的建议的文章, 作者的结构和思路非常清晰, 一个很好的关于创建App的结构性的建议文章. 所以我们将其翻译成中文, 期望读者能进一步以此为蓝本将创建App的想法,思路,建议丰富起来. 同时这也是我们后续编写关于创建app建议文章的蓝本.

译者:philoenglish.com 团队

阅读更多

应用推广的十个观点(译文)

1. 译者序

这是一篇非常好的推广移动应用的想法或者说是策略, 翻译过来分享给大家. 或许有些观点已经很显而易见, 那么就权当是一个总结. 后续会基于此文章陆续更新关于应用推广方面的想法和观点.

译者:philoenglish.com团队; 更多资讯可访问philoenglish.com

阅读更多

Angular injectable接口

1. 前言

本文将使用@Injectable 装饰器创建 Angular 服务。Angular 服务是可注入的,注入器可以将其注入到我们 Angular 应用程序中的任何组件或服务中。@Injectable 装饰器在类级别的服务中使用。@Injectable 装饰器帮助注入器考虑可注入的服务。在应用程序模块中的@NgModule 装饰器的提供者元数据中配置我们的服务后,该服务将在整个应用范围内可用。

要在组件中获取服务实例,我们需要为服务构造一个带参数的构造器, 并构造包含一系列可供组件或其他服务调用的方法。

假设我们想要创建一个购物车应用程序。在这种情况下,服务可以包含管理商店的方法、将商品添加到购物车的方法、从购物车中删除商品的方法以及查询商品的方法等。

阅读更多

vmware ESXi配置

1. 前言

这篇文章主要用来收集VMWare ESXi的一些配置步骤.

2. 开启SSH服务

默认ssh服务是关闭的, 开启ssh服务过程如下

进入管理=>服务, 找到TSM-SSH服务, 右击该服务会弹出子菜单, 点击启动.

要设为开机启动, 右击服务, 选择策略, 选择随主机启动和停止

阅读更多

帮助系统设计2

1. 网站帮助中心的作用

  • 通过向客户表明您了解他们所面临的问题以及如何提供帮助来建立信任;
  • 通过回答常见问题来改善客户服务,增强专业的品牌形象;
  • 通过减少重复发送给支持人员的电话和电子邮件,节省时间和金钱;
  • 增强您在搜索引擎中的知名度(包含更多关键词的帮助中心页面更易被搜索引擎喜欢);
  • 通过轻松找到他们要寻找的内容而不是搜索站点来改善用户体验。将答案直接链接到博客文章或内容页面可以使访问者更轻松地获取其他信息;
阅读更多

nginx安装教程

1. 介绍

1.1. 什么是nginx

Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。

由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,

并且cpu、内存等资源消耗却非常低,运行非常稳定。

阅读更多

PostgreSQL备份与恢复

1. 前言

数据库的备份有多种分类方式。

  1. 按照备份后的文件类型,可以分为物理备份(文件系统级别的备份)和逻辑备份(备份后的文件是sql文件或特定格式的导出文件);
  2. 按照备份过程中是否停止数据库服务,可分为冷备份(备份过程中停止数据库服务)和热备份(备份过程中数据库服务开启并可供用户访问);
  3. 按照备份是否是完整的数据库,可分为全量备份(备份是完整的数据库)和增量备份(备份是上一次全量备份后数据库改变的内容)。

Postgresql的常见备份方式有以下三种:文件系统级别的冷备份, SQL转储, 连续归档.

阅读更多

GitLab集成PlantUML

1. 摘要

本文提供了将PlantUML与GitLab集成的逐步指南。它涵盖了从配置PlantUML服务器到在GitLab中启用它的所有内容,并包括代码块以说明必要的命令。通过遵循本指南,您将能够使用PlantUML在GitLab snips、wikis和代码库中创建图表。

阅读更多

自己动手写一个Mysql到PostgreSQL数据库迁移工具

1. 前言

这段时间在进行 Mysql 到 PostgreSQL 数据库迁移工作.

主要包含三部分工作, 其一是构建数据库对象, 包括表, 视图, 存储过程的构建, 这部分由于我在项目早期就引入了 liquibase, 所以迁移工作很简单, 所以没有总结文章.

其二是代码修改, 让代码适配新的数据库, 这部分已经总结发布到了鹏叔的技术博客 - 从 Mariadb 迁移到 postgresql.

其三是数据迁移, 数据迁移也有一些现成的工具, 但是配置起来比较麻烦, 工具比想象中的复杂太多, 用起来也不是太顺手, 与其花时间在熟悉一次性的工具上, 不如自己写一个迁移工具. 于是就有了这篇文章.

阅读更多