मैं मोक के लिए पूरी तरह से नया हूं और अब System.Reflection.Assembly
कक्षा के लिए एक नकली बनाने की कोशिश कर रहा हूं। मैं इस कोड का उपयोग कर रहा:Moq के साथ ISerializable कक्षाओं का नकल कैसे करें?
var mockAssembly = new Mock<Assembly>();
mockAssembly.Setup(x => x.GetTypes()).Returns(new Type[] {
typeof(Type1),
typeof(Type2)
});
लेकिन जब मैं परीक्षण चलाने मैं अगले अपवाद:
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()
तुम मुझे Moq साथ ISerializable
कक्षाएं (जैसे System.Reflection.Assembly
) उपहास करने के लिए सही तरीके से सिफारिश की जा सकी।
अग्रिम धन्यवाद!
ठीक है, धन्यवाद। लेकिन क्या आप सुझाव दे सकते हैं कि उस मामले में मोक का उपयोग करके deserialization कन्स्ट्रक्टर कैसे प्रदान करें। – sam
आप नहीं कर सकते - असेंबली में कोई सुलभ कन्स्ट्रक्टर नहीं है, और जैसा कि Moq का उपयोग करते समय यह अनजान है: | –
आपको मॉक असेंबली के लिए एक deserialization कन्स्ट्रक्टर प्रदान करने की आवश्यकता नहीं है। आप interop _Assembly कक्षा का मज़ाक उड़ा सकते हैं और जरूरत पड़ने पर असेंबली में जा सकते हैं। – nathanchere