https://github.com/agiledragon/gomonkey
gomonkey is a library to make monkey patching in unit tests easy
https://github.com/agiledragon/gomonkey
function function-variable global-variable gomonkey interface member-method patch private-method sequence
Last synced: 3 months ago
JSON representation
gomonkey is a library to make monkey patching in unit tests easy
- Host: GitHub
- URL: https://github.com/agiledragon/gomonkey
- Owner: agiledragon
- License: mit
- Created: 2018-08-15T13:29:19.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2025-02-11T15:10:33.000Z (about 1 year ago)
- Last Synced: 2025-04-09T03:02:34.589Z (12 months ago)
- Topics: function, function-variable, global-variable, gomonkey, interface, member-method, patch, private-method, sequence
- Language: Go
- Homepage:
- Size: 94.7 KB
- Stars: 2,130
- Watchers: 27
- Forks: 183
- Open Issues: 59
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- go-awesome - gomonkey - 猴子补丁,对函数、变量等进行打桩,方便单元测试,Fork 自 [Monkey](https://github.com/bouk/monkey) (开源类库 / 测试)
- go-awesome - gomonkey - monkey patch, stack functions, variables etc. to facilitate unit testing, fork of [Monkey](https://github.com/bouk / Ape) (Open source library / Test)
- my-awesome - agiledragon/gomonkey - variable,global-variable,gomonkey,interface,member-method,patch,private-method,sequence pushed_at:2025-12 star:2.3k fork:0.2k gomonkey is a library to make monkey patching in unit tests easy (Go)
README
# gomonkey
gomonkey is a library to make monkey patching in unit tests easy, and the core idea of monkey patching comes from [Bouke](https://github.com/bouk), you can read [this blogpost](https://bou.ke/blog/monkey-patching-in-go/) for an explanation on how it works.
## Features
+ support a patch for a function
+ support a patch for a public member method
+ support a patch for a private member method
+ support a patch for a interface
+ support a patch for a function variable
+ support a patch for a global variable
+ support patches of a specified sequence for a function
+ support patches of a specified sequence for a member method
+ support patches of a specified sequence for a interface
+ support patches of a specified sequence for a function variable
## Notes
+ gomonkey fails to patch a function or a member method if inlining is enabled, please running your tests with inlining disabled by adding the command line argument that is `-gcflags=-l`(below go1.10) or `-gcflags=all=-l`(go1.10 and above).
+ A panic may happen when a goroutine is patching a function or a member method that is visited by another goroutine at the same time. That is to say, gomonkey is not threadsafe.
## Supported Platform:
- ARCH
- amd64
- arm64
- 386
- loong64
- riscv64
- OS
- Linux
- MAC OS X
- Windows
## Installation
- below v2.1.0, for example v2.0.2
```go
$ go get github.com/agiledragon/gomonkey@v2.0.2
```
- v2.1.0 and above, for example v2.11.0
```go
$ go get github.com/agiledragon/gomonkey/v2@v2.11.0
```
## Test Method
```go
$ cd test
$ go test -gcflags=all=-l
```
## Using gomonkey
Please refer to the test cases as idioms, very complete and detailed.