Я полностью новичок в Moq и теперь пытаюсь создать макет для System.Reflection.Assembly
класс. Я использую этот код:Как насмехаться с классами ISerializable с Moq?
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()
Не могли бы вы рекомендовать мне правильный путь, чтобы поиздеваться ISerializable
классы (как System.Reflection.Assembly
) с Moq.
Заранее спасибо!
Хорошо, спасибо. Но вы могли бы предложить, как создать конструктор десериализации, используя Moq в этом случае. – sam
вы не можете - сборка не имеет доступного конструктора, и поэтому она не может быть использована при использовании Moq: | –
Вам не нужно предоставлять конструктор десериализации, чтобы издеваться над сборкой. Вы можете издеваться над классом interop _Assembly и отбрасывать на сборку, когда это необходимо. – nathanchere