我正在尝试模拟此接口(interface):

public interface IManager
{
    TVal GetOrAdd<TVal, TArg>(string key, Func<TArg, TVal> valueFactory, TArg valueFactoryArg) where TVal : class;
}

我有isuse来模拟lambda表达式。
var _menagerMock = new Mock<IManager>();
_menagerMock.Setup(x => x.GetOrAdd<string, Tuple<int>>("stringValue",
            It.IsAny<Func<Tuple<int>,string>>, It.IsAny<Tuple<int>>);

It.IsAny >没有通过编译,
并且错误是:期望带有'string IsAny(Tuple)'签名的方法。

可以模拟这种功能吗?

最佳答案

尝试:

        var _menagerMock = new Mock<IManager>();
        _menagerMock.Setup(x => x.GetOrAdd("stringValue",
            It.IsAny<Func<Tuple<int>, string>>(), It.IsAny<Tuple<int>>()));

编辑:顺便说一句,It.IsAny()并不是测试的最佳实践。您应该设置显式值,而不要依赖It.IsAny()。如果您不确定测试中的输入,如何确定获得有效的输出?

10-06 02:22