给定一个我正在测试的简单类型,比如
interface IMyRepo
{
MyObj GetBy(Expression<Func<MyObj, bool> predicate);
}
因此标准模拟设置工作正常:
_repoMock.Setup(x => x.GetBy(y => y.Prop=="A")).Returns(myObjInstance);
例如,它匹配:_repo.GetBy(x => x.Prop=="A")
但是,如果我有一个辅助方法用于我的设置:_repoMock.Setup(Helpers.GenerateGetByMock<IMyRepo, MyObj>(y => y.Prop=="A"));
在哪里
Expression<Func<T, R>> GenerateGetByMock<T, R>(Expression<Func<R,bool>> pred) where T : IMyRepo where R : class
{
return x => x.GetBy(pred);
}
这在测试中不_repo.GetBy(x => x.Prop=="A")
匹配!
生成的表达式有什么不同?为什么我必须使用显式内联版本?有没有办法使用辅助方法?
与辅助方法相比: