使用 Moq It.IsAny 使用通用 Lambda 为通用函数设置 Mock
Setup Mock for generic function with generic Lambda using Moq It.IsAny
我正在尝试模拟这个界面:
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> 未通过编译,
错误是:需要一个带有 '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()。如果您不确定测试中的输入,您如何确定得到有效的输出?
我正在尝试模拟这个界面:
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
是否可以模拟这种功能?
尝试:
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()。如果您不确定测试中的输入,您如何确定得到有效的输出?