youkoulayley / mocktail

Naive code generator that creates mock implementation using testify.mock.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Mocktail

Mocktail logo

Naive code generator that creates mock implementation using testify.mock.

Unlike mockery, Mocktail generates typed methods on mocks.

How to use

  • Create a file named mock_test.go inside the package that you can to create mocks.
  • Add one or multiple comments // mocktail:MyInterface inside the file mock_test.go.
package example

// mocktail:MyInterface

Notes

It requires testify >= v1.7.0

Mocktail can only generate mock of interfaces inside a module itself (not from stdlib or dependencies)

Examples

package a

import (
	"context"
	"time"
)

type Pineapple interface {
	Juice(context.Context, string, Water) Water
}

type Coconut interface {
	Open(string, int) time.Duration
}

type Water struct{}
package a

import (
	"context"
	"testing"
)

// mocktail:Pineapple
// mocktail:Coconut

func TestMock(t *testing.T) {
	var s Pineapple = newPineappleMock(t).
		OnJuice("foo", Water{}).TypedReturns(Water{}).Once().
		Parent

	s.Juice(context.Background(), "", Water{})

	var c Coconut = newCoconutMock(t).
		OnOpen("bar", 2).Once().
		Parent

	c.Open("a", 2)
}

About

Naive code generator that creates mock implementation using testify.mock.

License:Apache License 2.0


Languages

Language:Go 97.0%Language:Makefile 3.0%