添加WhenInstance语法糖
WAY29 opened this issue · comments
Longlone commented
以下例子:
Mock(GetMethod(netAddr, "String")).When(func(self *net.TCPAddr) bool {
return self == netAddr
}).To(func() string {
return addr
}).Build()
希望可以简化成
Mock(GetMethod(netAddr, "String")).WhenInstance(netAddr).To(func() string {
return addr
}).Build()
Longlone commented
我希望实现的是仅仅对某个结构体实例进行mock,我现在不得不写类似于这样的代码:
mocknetAddrs := make(map[*net.TCPAddr]func() string)
addMockNetAddr := func(netAddr *net.TCPAddr, f func() string) {
mocknetAddrs[netAddr] = f
}
var netAddr *net.TCPAddr
var netAddrStringOriginFunc func() string
addMocker(
Mock(GetMethod(netAddr, "String")).
Origin(&netAddrStringOriginFunc).
To(func(self *net.TCPAddr) string {
if f, ok := mocknetAddrs[self]; ok {
return f()
}
return netAddrStringOriginFunc()
}).Build(),
)
// ...
addMockNetAddr(netAddr, func() string {
return addr
})
xhd2015 commented
在这个框架的基础上应该是解决不了的。