mirror of https://github.com/stretchr/testify.git
Added function 'IsMethodCallable', which checking that the method can be called.
parent
3ebf1ddaeb
commit
42aafee8d7
32
mock/mock.go
32
mock/mock.go
|
@ -527,6 +527,38 @@ func (m *Mock) AssertNotCalled(t TestingT, methodName string, arguments ...inter
|
|||
return true
|
||||
}
|
||||
|
||||
// IsMethodCallable checking that the method can be called.
|
||||
// Is returned bool val
|
||||
func (m *Mock) IsMethodCallable(t TestingT, methodName string, arguments ...interface{}) bool {
|
||||
if h, ok := t.(tHelper); ok {
|
||||
h.Helper()
|
||||
}
|
||||
m.mutex.Lock()
|
||||
defer m.mutex.Unlock()
|
||||
for _, v := range m.ExpectedCalls {
|
||||
if v.Method != methodName {
|
||||
continue
|
||||
}
|
||||
if len(arguments) != len(v.Arguments) {
|
||||
continue
|
||||
}
|
||||
if v.Repeatability < v.totalCalls {
|
||||
continue
|
||||
}
|
||||
var argsEqual = true
|
||||
for i, arg := range v.Arguments {
|
||||
if !reflect.DeepEqual(arguments[i], arg) {
|
||||
argsEqual = false
|
||||
continue
|
||||
}
|
||||
}
|
||||
if argsEqual {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *Mock) methodWasCalled(methodName string, expected []interface{}) bool {
|
||||
for _, call := range m.calls() {
|
||||
if call.Method == methodName {
|
||||
|
|
|
@ -1143,6 +1143,34 @@ func Test_Mock_AssertNotCalled(t *testing.T) {
|
|||
|
||||
}
|
||||
|
||||
func Test_Mock_IsMethodCallable(t *testing.T) {
|
||||
var mockedService = new(TestExampleImplementation)
|
||||
|
||||
mockedService.On("Test_Mock_IsMethodCallable", 1, 5).Return(5, 5).Twice()
|
||||
|
||||
assert.False(t, mockedService.IsMethodCallable(t, "Test_Mock_IsMethodCallable", 1))
|
||||
assert.False(t, mockedService.IsMethodCallable(t, "Test_Mock_IsMethodCallable", 1, 6))
|
||||
assert.False(t, mockedService.IsMethodCallable(t, "Test_Mock_IsMethodCallable", 2, 5))
|
||||
assert.False(t, mockedService.IsMethodCallable(t, "Test_Mock_IsMethodCallable", 1, int64(5)))
|
||||
assert.False(t, mockedService.IsMethodCallable(t, "Test_Mock_Check", 1, 5))
|
||||
|
||||
assert.True(t, mockedService.IsMethodCallable(t, "Test_Mock_IsMethodCallable", 1, 5))
|
||||
mockedService.MethodCalled("Test_Mock_IsMethodCallable", 1, 5)
|
||||
assert.True(t, mockedService.IsMethodCallable(t, "Test_Mock_IsMethodCallable", 1, 5))
|
||||
mockedService.MethodCalled("Test_Mock_IsMethodCallable", 1, 5)
|
||||
|
||||
assert.False(t, mockedService.IsMethodCallable(t, "Test_Mock_IsMethodCallable", 1, 5))
|
||||
|
||||
arr := Call{Repeatability: 1}
|
||||
mockedService.On("Function", arr).Return(true).Twice()
|
||||
assert.True(t, mockedService.IsMethodCallable(t, "Function", arr))
|
||||
mockedService.MethodCalled("Function", arr)
|
||||
assert.True(t, mockedService.IsMethodCallable(t, "Function", arr))
|
||||
mockedService.MethodCalled("Function", arr)
|
||||
|
||||
assert.False(t, mockedService.IsMethodCallable(t, "Function", arr))
|
||||
}
|
||||
|
||||
func Test_Mock_AssertOptional(t *testing.T) {
|
||||
// Optional called
|
||||
var ms1 = new(TestExampleImplementation)
|
||||
|
|
Loading…
Reference in New Issue