Moq返回与参数相同的委托

本文关键字:返回 参数 Moq | 更新日期: 2023-09-27 17:49:31

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

public interface ICacheProveder
{
    T GetOrAddToCache<T>(string key, Func<T> populateFunc);
}

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

Moq返回与参数相同的委托

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

在下面的示例中,为简单起见,我选择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
}