github.com/benma/gogen@v0.0.0-20160826115606-cf49914b915a/cmd/gosimplemock/README.md (about)

     1  # gosimplemock
     2  
     3  Automatically generate simple mocks with zero dependencies
     4  
     5  # Usage
     6  
     7  Creating an interface in your code to mock a dependency
     8  
     9  ```go
    10  type server interface {
    11    Serve(string) ([]byte, error)
    12  }
    13  
    14  func request(s server, path string) ([]byte, error) {
    15    return s.Serve(path)
    16  }
    17  
    18  //go:generate gosimplemock server
    19  
    20  // Dummy test
    21  func TestRequestReturnsServerError(t *testing.T) {
    22    m := &requestMock{
    23      ServeFunc: func(path string) ([]byte, error) {
    24        return nil, errors.New("failure")
    25      },
    26    }
    27    _, err := request(m, "/something")
    28    assert.Error(t, err)
    29  }
    30  ```
    31  
    32  Mocking an interface from the standard library
    33  
    34  ```go
    35  //go:generate gosimplemock io.Writer
    36  
    37  // Dummy test using the generated mock
    38  func TestWriter(t *testing.T) {
    39    expected := []byte("hello world")
    40    m := &WriterMock{
    41      WriteFunc: func(actual []byte) (int, error) {
    42        assert.Equal(t, expected, actual)
    43        return len(actual), nil
    44      },
    45    }
    46    n, err := m.Write(expected)
    47    assert.Equal(t, 11, n)
    48    assert.Equal(t, nil, err)
    49  }
    50  ```
    51  
    52  Printing the generated code:
    53  
    54  ```go
    55  $ gosimplemock -o=- io.ReadCloser
    56  /*
    57  * CODE GENERATED AUTOMATICALLY WITH github.com/ernesto-jimenez/gogen/cmd/gosimplemock
    58  * THIS FILE SHOULD NOT BE EDITED BY HAND
    59   */
    60  
    61  package gogen
    62  
    63  // ReadCloserMock mock
    64  type ReadCloserMock struct {
    65          CloseFunc func() error
    66  
    67          ReadFunc func([]byte) (int, error)
    68  }
    69  
    70  // Close mocked method
    71  func (m *ReadCloserMock) Close() error {
    72          if m.CloseFunc == nil {
    73                  panic("unexpected call to mocked method Close")
    74          }
    75          return m.CloseFunc()
    76  }
    77  
    78  // Read mocked method
    79  func (m *ReadCloserMock) Read(p0 []byte) (int, error) {
    80          if m.ReadFunc == nil {
    81                  panic("unexpected call to mocked method Read")
    82          }
    83          return m.ReadFunc(p0)
    84  }
    85  ```