首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JustMock:通过实例来嘲弄ToString评估

JustMock:通过实例来嘲弄ToString评估
EN

Stack Overflow用户
提问于 2014-02-25 00:13:11
回答 1查看 347关注 0票数 2

当我尝试以下JustMock时:

代码语言:javascript
复制
var mockedField = Mock.CreateLike<Field>(field => field.DisplayName == "Test Display");

我得到以下错误:

代码语言:javascript
复制
   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”是用测试环境中无法工作的逻辑覆盖的。因此,自然地,我试图重写所有字段实例的"ToString“方法:

代码语言:javascript
复制
var fieldMocker = Mock.Create<Field>();
Mock.Arrange(() => fieldMocker.ToString()).IgnoreInstance().Returns("Override To String");

当我创建"Field“实例时,我验证了它是否有效,但是由于某种原因,当我试图设置Mock时,会调用原始的"ToString”。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-23 09:09:34

在这种情况下,field.ToString()恰好是在DMZ或去Mockerized中调用的。因此,你所做的安排没有得到尊重。它看起来肯定是个bug,所以我记录了这个问题。

谢谢你报告窃听器。不幸的是,我无法提供任何解决办法(除了暂时不使用CreateLike ),所以我将尽快修复它。

更新:错误修复是https://github.com/telerik/JustMockLite/commit/dacddcd965da7fcd1d99e13b6847db954d86bb01。在此之前,它将在JustMock 2015 Q1发行版或内部构建中正式发布。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22001962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档