Soy completamente nuevo en Moq y ahora intento crear una simulación para System.Reflection.Assembly
clase. Estoy usando este código:¿Cómo burlarse de clases ISerializable con Moq?
var mockAssembly = new Mock<Assembly>();
mockAssembly.Setup(x => x.GetTypes()).Returns(new Type[] {
typeof(Type1),
typeof(Type2)
});
Pero cuando corro pruebas que conseguir al lado excepción:
System.ArgumentException : The type System.Reflection.Assembly
implements ISerializable, but failed to provide a deserialization
constructor
Stack Trace:
at
Castle.DynamicProxy.Generators.BaseProxyGenerator.VerifyIfBaseImplementsGetObjectData(Type
baseType)
at
Castle.DynamicProxy.Generators.ClassProxyGenerator.GenerateCode(Type[]
interfaces, ProxyGenerationOptions options)
at Castle.DynamicProxy.DefaultProxyBuilder.CreateClassProxy(Type
classToProxy, Type[] additionalInterfacesToProxy,
ProxyGenerationOptions options)
at Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type
classToProxy, Type[] additionalInterfacesToProxy,
ProxyGenerationOptions options, Object[] constructorArguments,
IInterceptor[] interceptors)
at Moq.Proxy.CastleProxyFactory.CreateProxy[T](ICallInterceptor
interceptor, Type[] interfaces, Object[] arguments)
at Moq.Mock`1.<InitializeInstance>b__0()
at Moq.PexProtector.Invoke(Action action)
at Moq.Mock`1.InitializeInstance()
at Moq.Mock`1.OnGetObject()
at Moq.Mock`1.get_Object()
¿Me podría recomiendo el camino correcto para burlarse ISerializable
clases (como System.Reflection.Assembly
) con Moq.
¡Gracias de antemano!
Ok, gracias. Pero podría sugerir cómo proporcionar el constructor de deserialización usando Moq en ese caso. – sam
no se puede - Assembly no tiene ningún constructor accesible, y como tal no se puede mover al usar Moq: | –
No es necesario que proporcione un constructor de deserialización para simular Assembly. Puede simular la interoperabilidad _ Clase de ensamblaje y enviarla al ensamblado cuando sea necesario. – nathanchere