Mockey - 简单易用的 Go 语言模拟库

Mockey - 简单易用的 Go 语言模拟库

🔥【免费下载链接】mockey a simple and easy-to-use golang mock library 🔥【免费下载链接】mockey 项目地址: https://gitcode.com/gh_mirrors/mock/mockey

1. 项目介绍

Mockey 是一个简单易用的 Go 语言模拟库,它可以快速方便地模拟函数和变量。Mockey 在字节跳动的服务单元测试编写中被广泛使用(超过 7000 个存储库),并且得到了积极的维护。它通过在运行时重写函数指令,本质上类似于 gomonkey。

Mockey 使得替换函数、方法和变量变得简单,减少了需要将所有依赖项指定为接口的需求。

特性

  • 基础功能

    • 模拟函数和方法
    • 支持基本类型和变体参数的函数
    • 支持基本类型和变体参数的方法(值或指针接收器)
    • 支持嵌套结构方法
    • 固定值或动态模拟(通过自定义钩子函数)
    • 导出私有类型的成员方法(不同包下)
    • 条件模拟(通过自定义钩子函数)
  • 高级功能

    • 模拟后执行原始函数(装饰者模式)
    • Goroutine 条件过滤(包含、排除、目标)
    • 逐步更改模拟行为 - 支持序列
    • 获取目标函数执行次数
    • 获取模拟函数执行次数
    • 模拟变量
    • 支持常见和函数变量

2. 项目快速启动

在开始使用 Mockey 前,请确保你的环境中已经安装了 Go 1.13 或更高版本。

安装 Mockey

使用 go get 命令安装 Mockey:

go get github.com/bytedance/mockey@latest

示例代码

以下是一个使用 Mockey 的简单示例:

package main

import (
	"fmt"
	"testing"
	"github.com/bytedance/mockey"
	"github.com/smartystreets/goconvey/convey"
)

// 示例函数
func Foo(in string) string {
	return in
}

// 示例结构体方法
type A struct{}

func (a A) Foo(in string) string {
	return in
}

// 测试函数
func TestMockXXX(t *testing.T) {
	// 函数模拟
	convey.Convey("Function mocking", t, func() {
		mockey.Mock(Foo).Return("c").Build()
		// 断言函数被模拟
	.So(Foo("anything"), convey.ShouldEqual, "c")
	})

	// 值接收器方法模拟
	convey.Convey("Method mocking (value receiver)", t, func() {
		mockey.Mock(A{}.Foo).Return("c").Build()
		// 断言方法被模拟
	.So(new(A).Foo("anything"), convey.ShouldEqual, "c")
	})

	// 指针接收器方法模拟
	convey.Convey("Method mocking (pointer receiver)", t, func() {
		mockey.Mock((*A).Foo).Return("c").Build()
		// 断言方法被模拟
		var b A
		.So(b.Foo("anything"), convey.ShouldEqual, "c")
	})

	// 变量模拟
	convey.Convey("Variable mocking", t, func() {
		var Bar int
		mockey.MockValue(&Bar).To(1)
		// 断言变量被模拟
	.So(Bar, convey.ShouldEqual, 1)
	})

	// 模拟结束后,自动释放
	fmt.Println(Foo("a")) // 输出: a
	fmt.Println(new(A).Foo("b")) // 输出: b
	fmt.Println(Bar) // 输出: 0
})

3. 应用案例和最佳实践

(此处应根据实际使用场景提供具体的案例和最佳实践,例如如何在单元测试中模拟外部依赖,如何使用 Mockey 进行集成测试等。)

4. 典型生态项目

(这里可以列出一些使用 Mockey 的典型开源项目,以及它们是如何利用 Mockey 来提高项目的测试效率和代码质量的。)

🔥【免费下载链接】mockey a simple and easy-to-use golang mock library 🔥【免费下载链接】mockey 项目地址: https://gitcode.com/gh_mirrors/mock/mockey

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值