Closed wuqxuan closed 4 years ago
type test struct{ Name string } func(t *test) printName(){ fmt.Println(t.Name) } // Err:“retrieve method by name failed” ApplyMethod(reflect.TypeOf(s), "printName", func(_ *test) { }) // 原因:ApplyMethod 底层调用reflect.TypeOf.MethodByName(methodName string), 若methodName为首字母小写,MethodByName 返回false。 package main import ( "fmt" "reflect" ) type test struct{ Name string } func(t *test) printName(){ fmt.Println(t.Name) } func main() { t := &test{} _,ok:=reflect.TypeOf(t).MethodByName("printName") fmt.Println(ok) // out:false }
由于反射的限制,仅有包内作用域的方法名无法导出,README中的Notes中有说明
@agiledragon 如果想 mock 私有方法有什么好的推荐吗? 我的单元测试希望尽量发生在一个函数内,不希望调用其他函数,因此就需要对私有方法进行 mock,但是目前没有找到什么好的办法