Moq 返回与参数相同的委托

Aar*_*ron 1 c# generics moq

我对 Moq 非常陌生,正在寻找一种能够模拟以下界面的方法。

public interface ICacheProveder
{
    T GetOrAddToCache<T>(string key, Func<T> populateFunc);
}
Run Code Online (Sandbox Code Playgroud)

该接口目前用于缓存代码表等项目。模拟需要返回任何传递到 via populateFunc 的结果。我目前使用的是 Moq 版本 4.2.1502.911

adr*_*dar 5

要返回Func作为参数传递的结果,您可以使用Returnsfrom Moq

在下面的例子中,为了简单起见,我选择T了一个string,它可以根据您的需要进行更改。

[Test]
public void TetMethod()
{
    //Setup
    var cacheProveder = new Mock<ICacheProveder>();

    cacheProveder.Setup(a => a.GetOrAddToCache<string>(It.IsAny<string>(), It.IsAny<Func<string>>()))
                    .Returns((string key, Func<string> populateFunc) => { return populateFunc(); });

    // rest of the code

}
Run Code Online (Sandbox Code Playgroud)