从这篇文章(How to moq a Func)中提取问题并将其改编为答案不正确。
public class FooBar
{
private Func<IFooBarProxy> __fooBarProxyFactory;
public FooBar(Func<IFooBarProxy> fooBarProxyFactory)
{
_fooBarProxyFactory = fooBarProxyFactory;
}
public void Process()
{
_fooBarProxyFactory();
_fooBarProxyFactory();
}
}
我需要模拟作为构造函数参数传递的 Func<>,即 func 被调用两次的断言。
当试图模拟函数var funcMock = new Mock<Func<IFooBarProxy>>();
Moq 引发和异常时,因为 Func 类型是不可模拟的。
问题是,如果不模拟函数,就无法验证函数是否被调用 (n) 次。funcMock.Verify( (), Times.AtLeast(2));