gpt4 book ai didi

c# - JustMock:通过示例模拟 ToString 评估

转载 作者:太空宇宙 更新时间:2023-11-03 15:59:43 24 4
gpt4 key购买 nike

当我尝试以下 JustMock 时:

var mockedField = Mock.CreateLike<Field>(field => field.DisplayName == "Test Display");

我收到以下错误:

   at Sitecore.Data.Fields.Field.GetValue(Boolean allowStandardValue, Boolean allowDefaultValue)
at Sitecore.Data.Fields.Field.get_Value()
at Sitecore.Data.Fields.Field.ToString()
at System.Linq.Expressions.ExpressionStringBuilder.VisitConstant(ConstantExpression node)
at System.Linq.Expressions.ConstantExpression.Accept(ExpressionVisitor visitor)
at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node)
at System.Linq.Expressions.ExpressionStringBuilder.OutMember(Expression instance, MemberInfo member)
at System.Linq.Expressions.ExpressionStringBuilder.VisitMember(MemberExpression node)
at System.Linq.Expressions.MemberExpression.Accept(ExpressionVisitor visitor)
at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node)
at System.Linq.Expressions.ExpressionStringBuilder.VisitLambda[T](Expression`1 node)
at System.Linq.Expressions.Expression`1.Accept(ExpressionVisitor visitor)
at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node)
at System.Linq.Expressions.ExpressionStringBuilder.ExpressionToString(Expression node)
at System.Linq.Expressions.Expression.ToString()
at Telerik.JustMock.Core.ExpressionUtil.ConvertMockExpressionToString(Expression expr)
at Telerik.JustMock.Core.MocksRepository.Arrange[TMethodMock](Expression expr, Func`1 methodMockFactory)
at Telerik.JustMock.Mock.<>c__DisplayClassa`1.<Arrange>b__8()
at Telerik.JustMock.Core.ProfilerInterceptor.GuardInternal[T](Func`1 guardedAction)
at Telerik.JustMock.Mock.Arrange[TResult](Expression`1 expression)
at Telerik.JustMock.Expectations.ReturnArranger.ArrangeReturn[T](Expression`1 callPattern, LambdaExpression returnValueExpr)

这似乎是因为它试图将“Field”类转换为字符串。 “Field”类的“ToString”被在测试环境中不起作用的逻辑覆盖。所以,我自然而然地尝试为 Field 的所有实例重写“ToString”方法:

var fieldMocker = Mock.Create<Field>();
Mock.Arrange(() => fieldMocker.ToString()).IgnoreInstance().Returns("Override To String");

当我创建“Field”的实例时,我验证它正在工作,但由于某种原因,当我尝试设置 Mock 时,原始的“ToString”被调用。

有什么想法吗?

最佳答案

在这种情况下,field.ToString() 恰好在 DMZ 或 De-Mockerized Zone 中被调用。因此,您所做的安排没有得到尊重。它看起来确实像一个错误,所以我已经记录了这个问题。

感谢您报告错误。不幸的是,我无法为您提供任何解决方法(除了暂时不使用 CreateLike),所以我会尽快修复它。

更新:错误修复是 checked in .它将在 JustMock 2015 Q1 版本或之前的内部版本中正式可用。

关于c# - JustMock:通过示例模拟 ToString 评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22001962/

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