mirror of https://github.com/stretchr/testify.git
commit
c4b8421a1f
14
mock/mock.go
14
mock/mock.go
|
@ -273,6 +273,20 @@ func (c *Call) NotBefore(calls ...*Call) *Call {
|
||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// InOrder defines the order in which the calls should be made
|
||||||
|
//
|
||||||
|
// For example:
|
||||||
|
//
|
||||||
|
// InOrder(
|
||||||
|
// Mock.On("init").Return(nil),
|
||||||
|
// Mock.On("Do").Return(nil),
|
||||||
|
// )
|
||||||
|
func InOrder(calls ...*Call) {
|
||||||
|
for i := 1; i < len(calls); i++ {
|
||||||
|
calls[i].NotBefore(calls[i-1])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Mock is the workhorse used to track activity on another object.
|
// Mock is the workhorse used to track activity on another object.
|
||||||
// For an example of its usage, refer to the "Example Usage" section at the top
|
// For an example of its usage, refer to the "Example Usage" section at the top
|
||||||
// of this document.
|
// of this document.
|
||||||
|
|
|
@ -937,6 +937,26 @@ func Test_Mock_Return_NotBefore_In_Order(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Test_Mock_Return_InOrder_Uses_NotBefore(t *testing.T) {
|
||||||
|
var mockedService = new(TestExampleImplementation)
|
||||||
|
|
||||||
|
InOrder(
|
||||||
|
mockedService.
|
||||||
|
On("TheExampleMethod", 1, 2, 3).
|
||||||
|
Return(4, nil),
|
||||||
|
mockedService.
|
||||||
|
On("TheExampleMethod2", true).
|
||||||
|
Return(),
|
||||||
|
)
|
||||||
|
|
||||||
|
require.NotPanics(t, func() {
|
||||||
|
mockedService.TheExampleMethod(1, 2, 3)
|
||||||
|
})
|
||||||
|
require.NotPanics(t, func() {
|
||||||
|
mockedService.TheExampleMethod2(true)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func Test_Mock_Return_NotBefore_Out_Of_Order(t *testing.T) {
|
func Test_Mock_Return_NotBefore_Out_Of_Order(t *testing.T) {
|
||||||
var mockedService = new(TestExampleImplementation)
|
var mockedService = new(TestExampleImplementation)
|
||||||
|
|
||||||
|
@ -967,6 +987,35 @@ TheExampleMethod(int,int,int)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Test_Mock_Return_InOrder_Uses_NotBefore_Out_Of_Order(t *testing.T) {
|
||||||
|
var mockedService = new(TestExampleImplementation)
|
||||||
|
|
||||||
|
InOrder(
|
||||||
|
mockedService.
|
||||||
|
On("TheExampleMethod", 1, 2, 3).
|
||||||
|
Return(4, nil).Twice(),
|
||||||
|
mockedService.
|
||||||
|
On("TheExampleMethod2", true).
|
||||||
|
Return(),
|
||||||
|
)
|
||||||
|
|
||||||
|
expectedPanicString := `mock: Unexpected Method Call
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
TheExampleMethod2(bool)
|
||||||
|
0: true
|
||||||
|
|
||||||
|
Must not be called before:
|
||||||
|
|
||||||
|
TheExampleMethod(int,int,int)
|
||||||
|
0: 1
|
||||||
|
1: 2
|
||||||
|
2: 3`
|
||||||
|
require.PanicsWithValue(t, expectedPanicString, func() {
|
||||||
|
mockedService.TheExampleMethod2(true)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func Test_Mock_Return_NotBefore_Not_Enough_Times(t *testing.T) {
|
func Test_Mock_Return_NotBefore_Not_Enough_Times(t *testing.T) {
|
||||||
var mockedService = new(TestExampleImplementation)
|
var mockedService = new(TestExampleImplementation)
|
||||||
|
|
||||||
|
@ -1022,6 +1071,7 @@ func Test_Mock_Return_NotBefore_Different_Mock_In_Order(t *testing.T) {
|
||||||
mockedService2.TheExampleMethod2(true)
|
mockedService2.TheExampleMethod2(true)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func Test_Mock_Return_NotBefore_Different_Mock_Out_Of_Order(t *testing.T) {
|
func Test_Mock_Return_NotBefore_Different_Mock_Out_Of_Order(t *testing.T) {
|
||||||
var (
|
var (
|
||||||
mockedService1 = new(TestExampleImplementation)
|
mockedService1 = new(TestExampleImplementation)
|
||||||
|
|
Loading…
Reference in New Issue