Ich bin komplett neu in Moq und versuche nun, einen Mock für System.Reflection.Assembly
Klasse zu erstellen. Ich verwende diesen Code:Wie man ISerializable-Klassen mit Moq vortäuscht?
var mockAssembly = new Mock<Assembly>();
mockAssembly.Setup(x => x.GetTypes()).Returns(new Type[] {
typeof(Type1),
typeof(Type2)
});
Aber wenn ich Tests laufe ich nächste Ausnahme erhalten:
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()
Könnten Sie empfehlen mir den richtigen Weg ISerializable
Klassen (wie System.Reflection.Assembly
) mit Moq zu verspotten.
Vielen Dank im Voraus!
Ok, danke. Aber könnten Sie vorschlagen, wie Deserialisierungskonstruktor mit Moq in diesem Fall bereitzustellen. – sam
Sie können nicht - Assembly verfügt über keinen barrierefreien Konstruktor und ist daher bei Verwendung von Moq: | nicht zu entfernen –
Sie müssen keinen Deserialisierungskonstruktor bereitstellen, um Assembly nachzuahmen. Sie können die interop _Assembly-Klasse überspie- len und bei Bedarf zu Assembly umwandeln. – nathanchere