karamaru-alpha/mocka

A toy mock library

★ 1Forks 0GoGitHub ↗Compare

README

mocka

Warning

Currently very experimental.

  • Type safety
  • Generate mock objects mapping args and results
  • Treat as stub objects is also possible
  • Configure by yaml, don't use //go:generate
  • There is no mather
  • There is no method chaining loop

Usage

https://github.com/karamaru-alpha/mocka/tree/main/testdata

Install

$ go install
$ mocka -h
Usage of mocka:
  -c string
    	Config yaml file path (default ".mocka.yaml")

Configure

Place .mocka.yaml in the root directory.

packages:
- github.com/karamaru-alpha/mocka/testdata:
    all: true
- fmt:
    interfaces:
    - Stringer

Generate mocks

Execute mocka command on the root directory.

$ mocka

Test

Expect

m := testdata.NewMockHuman(t)
m.MockSay.Expect("Alice").Times(1).Return("Hello, Alice")

ConditionalExpect

m := testdata.NewMockHuman(t)
m.MockSay.ConditionalExpect(func(name string) bool {
    return name == "Alice" || name == "Bob"
}).Times(1).Return("Hello, Alice or Bob")

Stabilize

m := testdata.NewMockHuman(t)
m.MockSay.Stabilize(func(name string) string {
    return "Hello, " + name
})

Comparison of other libraries

mocka uber-go/mock vektra/mockery matryer/moq gojuno/minimock
Type safety ✅ ✅ ✅
Map args and results ✅ ✅ ✅ ✅
Treat as a stub ✅ 👑 ✅
Configure by yaml ✅ 👑
No matcher ✅ ✅ ✅
No method loop ✅ ✅

Contributors

karamaru-alpha

Issues

Test

#2 · open · 0 comments