【发布时间】:2011-03-17 19:16:49
【问题描述】:
我正在尝试从 Microsoft Sync Framework 模拟一个类。它只有一个内部构造函数。当我尝试以下操作时:
var fullEnumerationContextMock = new Mock<FullEnumerationContext>();
我收到此错误:
System.NotSupportedException:父级 没有默认构造函数。 默认构造函数必须是 明确定义。
这是堆栈跟踪:
System.Reflection.Emit.TypeBuilder.DefineDefaultConstructorNoLock(MethodAttributes 属性) System.Reflection.Emit.TypeBuilder.DefineDefaultConstructor(MethodAttributes 属性) System.Reflection.Emit.TypeBuilder.CreateTypeNoLock() System.Reflection.Emit.TypeBuilder.CreateType() Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter.BuildType() Castle.DynamicProxy.Generators.ClassProxyGenerator.GenerateCode(Type[] 接口,ProxyGenerationOptions 选项) Castle.DynamicProxy.DefaultProxyBuilder.CreateClassProxy(类型 classToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions 选项) Castle.DynamicProxy.ProxyGenerator.CreateClassProxyType(Type classToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions 选项) Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(类型 classToProxy,Type[] additionalInterfacesToProxy, ProxyGenerationOptions 选项,Object[] constructorArguments, IInterceptor[] 拦截器) Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(类型 classToProxy,Type[] additionalInterfacesToProxy, ProxyGenerationOptions 选项,IInterceptor[] 拦截器) Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(类型 classToProxy,Type[] additionalInterfacesToProxy,IInterceptor[] 拦截器) Moq.Mock
1.<InitializeInstance>b__0() Moq.PexProtector.Invoke(Action action) Moq.Mock1.InitializeInstance()
我该如何解决这个问题?
【问题讨论】:
-
感谢您提出这个问题!仅仅是存在帮助了我。我可以在我自己的代码中公开构造函数。不幸的是,这对你的情况没有帮助,但你仍然帮助了我 +1
标签: c# unit-testing moq microsoft-sync-framework