この記事 ( 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 が 2 回呼び出されたことをアサートします。
var funcMock = new Mock<Func<IFooBarProxy>>();
Moq が発生させる関数をモックしようとすると、 Func 型がモック可能ではないため、例外が発生します。
問題は、func をモックしないと、func が (n) 回呼び出されたことを確認できないことです。funcMock.Verify( (), Times.AtLeast(2));