56

GitHub - Code-Hex/funcy-mock: funcy-mock generates mock file from interface go f...

 5 years ago
source link: https://github.com/Code-Hex/funcy-mock
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

README.md

funcy-mock

Go Report Card

funcy-mock generates mock file from interface go file

Synopsis

You can try following:

  • git clone [email protected]:Code-Hex/funcy-mock.git && cd funcy-mock/tmp
  • funcygen demo.go

If you have some question, You run funcygen -h or report to issue.

Description

THIS TOOL IS BETA QUALITY.

funcygen just by specifying the Go file described the interface, we will generate a go file containing the mock code.

Installation

go get github.com/cmd/funcygen

Generated file

from demo.go to demo_mock_for_test.go

package main

import (
	"context"
	"github.com/Code-Hex/funcy-mock/tmp/internal/auth"
	"github.com/Code-Hex/funcy-mock/tmp/internal/user"
)

type UserServiceMock struct {
	auth func(context.Context) (*auth.Token, error)
	get  func() (*user.Response, error)
}

func NewUserServiceMock() *UserServiceMock {
	return &UserServiceMock{
		auth: func(context.Context) (*auth.Token, error) { return nil, nil },
		get:  func() (*user.Response, error) { return nil, nil },
	}
}

func (u *UserServiceMock) Auth(ctx context.Context) (*auth.Token, error) {
	return u.auth()
}

func (u *UserServiceMock) SetAuth(f func(context.Context) (*auth.Token, error)) {
	if f == nil {
		panic("You should specify the mock function")
	}
	u.auth = f
}

func (u *UserServiceMock) Get() (*user.Response, error) {
	return u.get()
}

func (u *UserServiceMock) SetGet(f func() (*user.Response, error)) {
	if f == nil {
		panic("You should specify the mock function")
	}
	u.get = f
}

type AuthServiceMock struct {
	auth func(context.Context) (*auth.Token, error)
}

func NewAuthServiceMock() *AuthServiceMock {
	return &AuthServiceMock{
		auth: func(context.Context) (*auth.Token, error) { return nil, nil },
	}
}

func (a *AuthServiceMock) Auth(ctx context.Context) (*auth.Token, error) {
	return a.auth()
}

func (a *AuthServiceMock) SetAuth(f func(context.Context) (*auth.Token, error)) {
	if f == nil {
		panic("You should specify the mock function")
	}
	a.auth = f
}

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK