Tôi đang cố gắng thử một lớp từ Microsoft Sync Framework. Nó chỉ có một hàm tạo bên trong. Khi tôi thử như sau:Mocking một loại với một hàm tạo nội bộ bằng cách sử dụng Moq
var fullEnumerationContextMock = new Mock<FullEnumerationContext>();
tôi nhận được lỗi này:
System.NotSupportedException: Parent does not have a default constructor. The default constructor must be explicitly defined.
Đây là stack trace:
System.Reflection.Emit.TypeBuilder.DefineDefaultConstructorNoLock(MethodAttributes attributes) System.Reflection.Emit.TypeBuilder.DefineDefaultConstructor(MethodAttributes attributes) System.Reflection.Emit.TypeBuilder.CreateTypeNoLock() System.Reflection.Emit.TypeBuilder.CreateType() Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter.BuildType() Castle.DynamicProxy.Generators.ClassProxyGenerator.GenerateCode(Type[] interfaces, ProxyGenerationOptions options) Castle.DynamicProxy.DefaultProxyBuilder.CreateClassProxy(Type classToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options) Castle.DynamicProxy.ProxyGenerator.CreateClassProxyType(Type classToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options) Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type classToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options, Object[] constructorArguments, IInterceptor[] interceptors) Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type classToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options, IInterceptor[] interceptors) Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type classToProxy, Type[] additionalInterfacesToProxy, IInterceptor[] interceptors) Moq.Mock
1.<InitializeInstance>b__0() Moq.PexProtector.Invoke(Action action) Moq.Mock
1.InitializeInstance()
Làm thế nào tôi có thể làm việc vòng này?
Cảm ơn câu hỏi này! Nó chỉ là sự tồn tại đã giúp tôi. Tôi đã, trên mã của riêng tôi, có thể làm cho các nhà xây dựng công khai. Thật không may điều này không thể giúp tôi trường hợp của bạn, nhưng bạn vẫn giúp tôi ra +1 – Marcel