Я использую последнюю версию Moq (4.2.1502.911) в Visual Studio 2013, чтобы имитировать внутренний интерфейс, содержащийся в другом проекте. Оба проекта подписаны одним и тем же ключом. После поиска здесь и в других местах в Интернете я решил, что мне нужно добавить InternalsVisibleTo для тестовой сборки и «DynamicProxyGenAssembly2», используя открытый ключ Moq следующим образом:
[assembly: InternalsVisibleTo("UnitTestProject1, PublicKey=00240000048000009...
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2, PublicKey=002400000...
< /code>
Теперь, когда я запускаю свой метод испытания, я все еще получаю следующую ошибку: < /p>
Test Name: TestMethod1
Test FullName: UnitTestProject1.Class1Test.TestMethod1
Test Source: c:\Users\******\Documents\Visual Studio 2013\Projects\MoqTest\UnitTestProject1\UnitTest1.cs : line 13
Test Outcome: Failed
Test Duration: 0:00:00,0693592
Result Message:
Test method UnitTestProject1.Class1Test.TestMethod1 threw exception:
System.TypeLoadException: Le type 'Castle.Proxies.IFooProxy' de l'assembly 'DynamicProxyGenAssembly2, Version=0.0.0.0, Culture=neutral, PublicKeyToken=a621a9e7e5c32e69' essaye d'implémenter une interface inaccessible.
Result StackTrace:
à System.Reflection.Emit.TypeBuilder.TermCreateClass(RuntimeModule module, Int32 tk, ObjectHandleOnStack type)
à System.Reflection.Emit.TypeBuilder.CreateTypeNoLock()
à System.Reflection.Emit.TypeBuilder.CreateType()
à Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter.CreateType(TypeBuilder type)
à Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter.BuildType()
à Castle.DynamicProxy.Generators.InterfaceProxyWithoutTargetGenerator.GenerateType(String typeName, Type proxyTargetType, Type[] interfaces, INamingScope namingScope)
à Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator.c__DisplayClass1.b__0(String n, INamingScope s)
à Castle.DynamicProxy.Generators.BaseProxyGenerator.ObtainProxyType(CacheKey cacheKey, Func`3 factory)
à Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator.GenerateCode(Type proxyTargetType, Type[] interfaces, ProxyGenerationOptions options)
à Castle.DynamicProxy.DefaultProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(Type interfaceToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options)
à Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(Type interfaceToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options, IInterceptor[] interceptors)
à Moq.Proxy.CastleProxyFactory.CreateProxy(Type mockType, ICallInterceptor interceptor, Type[] interfaces, Object[] arguments)
à Moq.Mock`1.b__2()
à Moq.PexProtector.Invoke(Action action)
à Moq.Mock`1.InitializeInstance()
à Moq.Mock`1.OnGetObject()
à Moq.Mock`1.get_Object()
à UnitTestProject1.Class1Test.TestMethod1() dans c:\Users\******\Documents\Visual Studio 2013\Projects\MoqTest\UnitTestProject1\UnitTest1.cs:ligne 15
(На английском языке: System.TypeLoadException : Введите «Castle.Proxies.IFooProxy» из сборки «DynamicProxyGenAssembly2, Version=0.0.0.0, Culture=neutral, PublicKeyToken=a621a9e7e5c32e69» пытается реализовать недоступное интерфейс.)
Я использую последнюю версию Moq (4.2.1502.911) в Visual Studio 2013, чтобы имитировать внутренний интерфейс, содержащийся в другом проекте. Оба проекта подписаны одним и тем же ключом. После поиска здесь и в других местах в Интернете я решил, что мне нужно добавить InternalsVisibleTo для тестовой сборки и «DynamicProxyGenAssembly2», используя открытый ключ Moq следующим образом:
Теперь, когда я запускаю свой метод испытания, я все еще получаю следующую ошибку: < /p>
Test Name: TestMethod1 Test FullName: UnitTestProject1.Class1Test.TestMethod1 Test Source: c:\Users\******\Documents\Visual Studio 2013\Projects\MoqTest\UnitTestProject1\UnitTest1.cs : line 13 Test Outcome: Failed Test Duration: 0:00:00,0693592
Result Message: Test method UnitTestProject1.Class1Test.TestMethod1 threw exception: System.TypeLoadException: Le type 'Castle.Proxies.IFooProxy' de l'assembly 'DynamicProxyGenAssembly2, Version=0.0.0.0, Culture=neutral, PublicKeyToken=a621a9e7e5c32e69' essaye d'implémenter une interface inaccessible. Result StackTrace: à System.Reflection.Emit.TypeBuilder.TermCreateClass(RuntimeModule module, Int32 tk, ObjectHandleOnStack type) à System.Reflection.Emit.TypeBuilder.CreateTypeNoLock() à System.Reflection.Emit.TypeBuilder.CreateType() à Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter.CreateType(TypeBuilder type) à Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter.BuildType() à Castle.DynamicProxy.Generators.InterfaceProxyWithoutTargetGenerator.GenerateType(String typeName, Type proxyTargetType, Type[] interfaces, INamingScope namingScope) à Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator.c__DisplayClass1.b__0(String n, INamingScope s) à Castle.DynamicProxy.Generators.BaseProxyGenerator.ObtainProxyType(CacheKey cacheKey, Func`3 factory) à Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator.GenerateCode(Type proxyTargetType, Type[] interfaces, ProxyGenerationOptions options) à Castle.DynamicProxy.DefaultProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(Type interfaceToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options) à Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(Type interfaceToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options, IInterceptor[] interceptors) à Moq.Proxy.CastleProxyFactory.CreateProxy(Type mockType, ICallInterceptor interceptor, Type[] interfaces, Object[] arguments) à Moq.Mock`1.b__2() à Moq.PexProtector.Invoke(Action action) à Moq.Mock`1.InitializeInstance() à Moq.Mock`1.OnGetObject() à Moq.Mock`1.get_Object() à UnitTestProject1.Class1Test.TestMethod1() dans c:\Users\******\Documents\Visual Studio 2013\Projects\MoqTest\UnitTestProject1\UnitTest1.cs:ligne 15 [/code]
(На английском языке: System.TypeLoadException : Введите «Castle.Proxies.IFooProxy» из сборки «DynamicProxyGenAssembly2, Version=0.0.0.0, Culture=neutral, PublicKeyToken=a621a9e7e5c32e69» пытается реализовать недоступное интерфейс.)
Есть ли что-то еще, чтобы это заработало? Вот минимальный компилируемый пример: https://www.dropbox.com/s/c2slwq4do5ttp9p/MoqTest.zip?dl=0