gpt4 book ai didi

moq - 尝试使用 Moq 模拟 IObjectSet 时出现 TypeLoadException

转载 作者:行者123 更新时间:2023-12-03 13:55:27 24 4
gpt4 key购买 nike

我有以下设置代码:

MockOf<IObjectSet<Dummy>>().Setup(c => c.AddObject(dummy)).Verifiable();
MockOf<IObjectContextWrapper>().Setup(c => c.GetObjectSet<Dummy>()).Returns(MockOf<IObjectSet<Dummy>>().Object);

在哪里 Dummy是一个空类定义, dummyDummy . MockOf<T>()是基类上的一个模拟管理功能,它基本上确保每次在一个类型上调用它时,它都会返回相同的模拟实例。

包含此设置代码的测试失败并返回 TypeLoadException和以下消息:

System.TypeLoadException : Type 'IObjectSet`1Proxy389e220f10aa4d9281d0b9e136edc1d4' from assembly 'DynamicProxyGenAssembly2, Version=0.0.0.0, Culture=neutral, PublicKeyToken=a621a9e7e5c32e69' is attempting to implement an inaccessible interface.

at System.Reflection.Emit.TypeBuilder.TermCreateClass(RuntimeModule module, Int32 tk, ObjectHandleOnStack type)
at System.Reflection.Emit.TypeBuilder.CreateTypeNoLock()
at System.Reflection.Emit.TypeBuilder.CreateType()
at Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter.BuildType()
at Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator.GenerateCode(Type proxyTargetType, Type[] interfaces, ProxyGenerationOptions options)
at Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(Type interfaceToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options, IInterceptor[] interceptors)
at Moq.Mock1.<InitializeInstance>b__0()

at Moq.Mock
1.InitializeInstance()
at Moq.Mock`1.get_Object()
at OddEnds.Tests.Data.EntityFramework.RepositoryTest.Delete_DeletesObjectFromObjectSet() in RepositoryTest.cs: line 43



我已导入 System.Data.Objects并在测试项目和被测试类所在的项目中引用了 System.Data.Entity.dll 和 Microsoft.Data.Entity.CTP.dll。构建成功,没有错误、警告或消息(除了一些与代码契约(Contract)相关的...)

我该如何解决?

最佳答案

您在测试中使用的任何接口(interface)或类是内部的吗?你在使用类似 [assembly: InternalsVisibleTo("YourTestAssembly")] 的东西吗?为了让东西编译?

如果是这样,您还需要为 DynamicProxyGenAssembly2 添加一个,以便 Moq 为类动态生成代理。

//goes in the AssemblyInfo.cs where the internal interfaces / classes are defined
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]

这是关于该主题的相关帖子

http://sonofpirate.blogspot.com/2009/09/my-first-foray-into-unit-testing-with.html

我希望这有帮助

关于moq - 尝试使用 Moq 模拟 IObjectSet 时出现 TypeLoadException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5008552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com