gpt4 book ai didi

c# - 在 Moq 中检查设置的表达式输入参数

转载 作者:太空宇宙 更新时间:2023-11-03 13:29:38 25 4
gpt4 key购买 nike

我想要 Moq 一个看起来像这样的方法:

OrderAttrTypeRepository.Get(attributeType => attributeType.Description == property.Key);

我想根据 property.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;
})

但是,当我运行测试时,我总是得到一个空值。即使使用 property.key = "ServiceCharge"调用该方法。

在saveObject对象中,表达式体是这样的:

attributeType.Description == value(Quipu.Eba.Service.UtilityPaymentService+<>c__DisplayClass53).property.Key)

这就是为什么表达式没有被评估的原因,因为它们是相同的。

有什么建议吗?

最佳答案

现在我发现了问题,我会自己回答。

property.Key是一个变量,因此,当作为表达式求值时,它被转换为 value(Quipu.Eba.Service.UtilityPaymentService+<>c__DisplayClass53).property.Key)

如果property.key是一个常量字符串,值为 "ServiceCharge" ,然后它将按常量的值按预期进行转换,我将能够比较表达式。

所以,我将不得不以另一种方式关注这个问题,因为,无论变量 property.key 的值是多少,它总是被转换为它们的引用而不是值,这意味着,据我所知,我无法区分这些表情。

关于c# - 在 Moq 中检查设置的表达式输入参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21117199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com