我遇到VB9和Moq的问题。
我需要在Sub上调用验证。像这样:
logger.Verify(Function(x) x.Log, Times.AtLeastOnce)
我的记录器看起来像这样:
Public Interface ILogger
Sub Log()
End Interface
但是使用VB这是不可能的,因为Log方法是Sub,因此不会产生值。
我不想将方法更改为函数。
什么是最简洁的方法来解决这个限制,有没有办法将Sub包装为如下所示的函数?
logger.Verify(Function(x) ToFunc(AddressOf x.Log), Times.AtLeastOnce)
我试过这个,但我明白了:
Lambda参数不在范围内
答案 0 :(得分:1)
VB10允许使用Lambada Subs。
您是否尝试过一个简单的包装器,例如:
Public Function Wrapper(source as Action) as Boolean
source.Invoke()
Return True
End Function
答案 1 :(得分:-1)
2010年,如果它的Sub而不是Function只是用Sub替换Function。
logger.Verify( Sub (x)x.Log,Times.AtLeastOnce)