我想模拟一个类似于这样的方法:
OrderAttrTypeRepository.Get(attributeType => attributeType.Description == property.Key);
我希望能根据属性.Key比较该方法的调用参数。
我尝试了以下方法:
Expression<Func<OrderAttrType, bool>> saveObject;
Expression<Func<OrderAttrType, bool>> criteria = y => y.Description == "ServiceCharge";
Mock.Setup(x => x.OrderAttrTypeRepository.Get(It.IsAny<Expression<Func<OrderAttrType, bool>>>()))
.Callback<Expression<Func<OrderAttrType, bool>>>(i => saveObject = i)
.Returns<Expression<Func<OrderAttrType, bool>>>(filter =>
{
if (Utility.ExpressionComparer.AreEqual(filter, criteria))
return "Whatever";
else
return null;
})
当我运行测试时,无论如何都会得到一个null。即使方法被调用且property.key = "ServiceCharge"。
在saveObject对象中,表达式主体看起来像这样:
attributeType.Description == value(Quipu.Eba.Service.UtilityPaymentService+<>c__DisplayClass53).property.Key)
这就是表达式不被视为相同的原因。有什么建议吗?