mirror of https://github.com/stretchr/testify.git
Refactored 'IsMethodCallable'
parent
42aafee8d7
commit
36e077c09a
23
mock/mock.go
23
mock/mock.go
|
@ -545,20 +545,27 @@ func (m *Mock) IsMethodCallable(t TestingT, methodName string, arguments ...inte
|
|||
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 {
|
||||
if isArgsEqual(v.Arguments, arguments) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func isArgsEqual(expected Arguments, args []interface{}) bool {
|
||||
if len(args) != len(args) {
|
||||
return false
|
||||
}
|
||||
var argsEqual = true
|
||||
for i, v := range args {
|
||||
if !reflect.DeepEqual(expected[i], v) {
|
||||
argsEqual = false
|
||||
continue
|
||||
}
|
||||
}
|
||||
return argsEqual
|
||||
}
|
||||
|
||||
func (m *Mock) methodWasCalled(methodName string, expected []interface{}) bool {
|
||||
for _, call := range m.calls() {
|
||||
if call.Method == methodName {
|
||||
|
|
|
@ -1171,6 +1171,22 @@ func Test_Mock_IsMethodCallable(t *testing.T) {
|
|||
assert.False(t, mockedService.IsMethodCallable(t, "Function", arr))
|
||||
}
|
||||
|
||||
func TestIsArgsEqual(t *testing.T) {
|
||||
var expected = Arguments{5, 3, 4, 6, 7, 2}
|
||||
var args = make([]interface{}, 6)
|
||||
for i := 0; i < len(expected); i++ {
|
||||
args[i] = expected[i]
|
||||
}
|
||||
args[2] = expected[1]
|
||||
assert.False(t, isArgsEqual(expected, args))
|
||||
|
||||
var arr = make([]interface{}, 6)
|
||||
for i := 0; i < len(expected); i++ {
|
||||
arr[i] = expected[i]
|
||||
}
|
||||
assert.True(t, isArgsEqual(expected, arr))
|
||||
}
|
||||
|
||||
func Test_Mock_AssertOptional(t *testing.T) {
|
||||
// Optional called
|
||||
var ms1 = new(TestExampleImplementation)
|
||||
|
|
Loading…
Reference in New Issue