github.com/golang/mock@v1.6.0/gomock/example_test.go (about)

     1  package gomock_test
     2  
     3  //go:generate mockgen -destination mock_test.go -package gomock_test -source example_test.go
     4  
     5  import (
     6  	"fmt"
     7  	"testing"
     8  	"time"
     9  
    10  	"github.com/golang/mock/gomock"
    11  )
    12  
    13  type Foo interface {
    14  	Bar(string) string
    15  }
    16  
    17  func ExampleCall_DoAndReturn_latency() {
    18  	t := &testing.T{} // provided by test
    19  	ctrl := gomock.NewController(t)
    20  	mockIndex := NewMockFoo(ctrl)
    21  
    22  	mockIndex.EXPECT().Bar(gomock.Any()).DoAndReturn(
    23  		// signature of anonymous function must have the same number of input and output arguments as the mocked method.
    24  		func(arg string) string {
    25  			time.Sleep(1 * time.Millisecond)
    26  			return "I'm sleepy"
    27  		},
    28  	)
    29  
    30  	r := mockIndex.Bar("foo")
    31  	fmt.Println(r)
    32  	// Output: I'm sleepy
    33  }
    34  
    35  func ExampleCall_DoAndReturn_captureArguments() {
    36  	t := &testing.T{} // provided by test
    37  	ctrl := gomock.NewController(t)
    38  	mockIndex := NewMockFoo(ctrl)
    39  	var s string
    40  
    41  	mockIndex.EXPECT().Bar(gomock.AssignableToTypeOf(s)).DoAndReturn(
    42  		// signature of anonymous function must have the same number of input and output arguments as the mocked method.
    43  		func(arg string) interface{} {
    44  			s = arg
    45  			return "I'm sleepy"
    46  		},
    47  	)
    48  
    49  	r := mockIndex.Bar("foo")
    50  	fmt.Printf("%s %s", r, s)
    51  	// Output: I'm sleepy foo
    52  }