У меня есть следующий код установки:
MockOf<IObjectSet<Dummy>>().Setup(c => c.AddObject(dummy)).Verifiable();
MockOf<IObjectContextWrapper>().Setup(c => c.GetObjectSet<Dummy>()).Returns(MockOf<IObjectSet<Dummy>>().Object);
где Dummy
- пустое определение класса, а Dummy
- Dummy
. MockOf<T>()
- это функция управления макетами в базовом классе, которая в основном гарантирует, что каждый раз, когда он вызывает тип, он возвращает тот же макет.
Тест, содержащий этот код установки, сбой TypeLoadException
и следующее сообщение:
System.TypeLoadException: введите 'IObjectSet`1Proxy389e220f10aa4d9281d0b9e136edc1d4' из сборки 'DynamicProxyGenAssembly2, Version = 0.0.0.0, Culture = neutral, PublicKeyToken = a621a9e7e5c32e69' пытается реализовать недоступный интерфейс.
в System.Reflection.Emit.TypeBuilder.TermCreateClass(модуль RuntimeModule, Int32 tk, тип ObjectHandleOnStack)
в System.Reflection.Emit.TypeBuilder.CreateTypeNoLock()
в System.Reflection.Emit.TypeBuilder.CreateType()
в Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter.BuildType()
в Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator.GenerateCode(Тип proxyTargetType, Type [] интерфейсы, параметры ProxyGenerationOptions)
в Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(тип interfaceToProxy, Type [] дополнительныеИнтерфейсыToProxy, опции ProxyGenerationOptions, перехватчики IInterceptor [])
в Moq.Mock1.<InitializeInstance>b__0()
1.InitializeInstance()
at Moq.Mock
в Moq.Mock`1.get_Object()
в OddEnds.Tests.Data.EntityFramework.RepositoryTest.Delete_DeletesObjectFromObjectSet() в RepositoryTest.cs: строка 43
Я импортировал System.Data.Objects
и ссылался как на System.Data.Entity.dll, так и на Microsoft.Data.Entity.CTP.dll как в тестовом проекте, так и в проекте, в котором находится тестируемый класс. Сборка успешно завершена без ошибок, предупреждений или сообщений (кроме нескольких связанных с кодовыми контрактами...)
Как это исправить?