我试图模仿这个界面:
public interface IManager
{
TVal GetOrAdd<TVal, TArg>(string key, Func<TArg, TVal> valueFactory, TArg valueFactoryArg) where TVal : class;
}
我正在使用模拟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&lt; FUNC,串&GT;&GT;没有通过汇编, 错误是:预期带有'string IsAny(Tuple)'签名的方法。
有可能嘲笑这种功能吗?
答案 0 :(得分:4)
尝试:
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()。如果您不确定测试中的输入,您如何确定自己获得有效输出?