mockery provides the ability to easily generate mocks for Golang interfaces using the stretchr/testify/mock package. It removes the boilerplate coding required to use mocks.
Documentation is found at out Github Pages site.
v1 is the original version of the software, and is no longer supported.
mockery
is currently in v2, which originally included cosmetic and configuration improvements over v1, but also implements a number of quality-of-life additions.
v3 will include a ground-up overhaul of the entire codebase and will completely change how mockery works internally and externally. The highlights of the project are:
- Moving towards a package-based model instead of a file-based model.
mockery
currently iterates over every file in a project and callspackage.Load
on each one, which is time-consuming. Moving towards a model where the entire package is loaded at once will dramatically reduce runtime, and will simplify logic. Additionally, supporting only a single mode of operation (package mode) will greatly increase the intuitiveness of the software. - Configuration-driven generation.
v3
will be entirely driven by configuration, meaning:- You specify the packages you want mocked, instead of relying on it auto-discovering your package. Auto-discovery in theory sounds great, but in practice it leads to a great amount of complexity for very little benefit.
- Package- or interface-specific overrides can be given that change mock generation settings on a granular level. This will allow your mocks to be generated in a heterogeneous manner, and will be made explicit by YAML configuration.
- Proper error reporting. Errors across the board will be done in accordance with modern Golang practices
- Variables in generated mocks will be given meaningful names.