summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/stretchr/testify/mock/doc.go
blob: 7324128ef19c51d1cc74cd2cae8c886b2a71e7df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// Package mock provides a system by which it is possible to mock your objects
// and verify calls are happening as expected.
//
// Example Usage
//
// The mock package provides an object, Mock, that tracks activity on another object.  It is usually
// embedded into a test object as shown below:
//
//   type MyTestObject struct {
//     // add a Mock object instance
//     mock.Mock
//
//     // other fields go here as normal
//   }
//
// When implementing the methods of an interface, you wire your functions up
// to call the Mock.Called(args...) method, and return the appropriate values.
//
// For example, to mock a method that saves the name and age of a person and returns
// the year of their birth or an error, you might write this:
//
//     func (o *MyTestObject) SavePersonDetails(firstname, lastname string, age int) (int, error) {
//       args := o.Called(firstname, lastname, age)
//       return args.Int(0), args.Error(1)
//     }
//
// The Int, Error and Bool methods are examples of strongly typed getters that take the argument
// index position. Given this argument list:
//
//     (12, true, "Something")
//
// You could read them out strongly typed like this:
//
//     args.Int(0)
//     args.Bool(1)
//     args.String(2)
//
// For objects of your own type, use the generic Arguments.Get(index) method and make a type assertion:
//
//     return args.Get(0).(*MyObject), args.Get(1).(*AnotherObjectOfMine)
//
// This may cause a panic if the object you are getting is nil (the type assertion will fail), in those
// cases you should check for nil first.
package mock