我有一个必须在我的应用程序中引用的 COM 库,我正在尝试模拟它的接口(interface)。
我在执行此操作时遇到异常 MockRepository.GenerateMock<IAmAComInterface>();
当我这样做时我没有得到异常:MockRepository.GenerateDynamicMockWithRemoting<IAmAComInterface>();
但我的期望都没有得到证实。
我做错了什么吗?
目前,我有一堆用于我所有 COM 接口(interface)的包装器,我正在模拟它们,但我真的不想包装所有东西。
编辑:
GenerateMock 异常:
System.TypeLoadException
随着消息:
The type is marked as eligible for type equivalence, but either it has generic parameters, or it is not a structure, COM imported interface, enumeration, or delegate.
当使用 GenerateDynamicMockWithRemoting 测试失败时,对于 COM 接口(interface)上的任何期望,总是显示 Expected: 1 Actual: 0。
使用 Rhino.Mocks 3.6。
最佳答案
看起来这是 .NET 4.0 的“类型等效性”的问题。有关更多详细信息,请参见:http://code.google.com/p/moq/issues/detail?id=254
修复(如上所述)很容易,只需添加:
Castle.DynamicProxy.Generators.AttributesToAvoidReplicating.Add(typeof (TypeIdentifierAttribute));
到你的单元测试。
关于c# - 使用 Rhino Mocks 模拟 COM 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3444581/