c# - 使用 Rhino Mocks 模拟 COM 接口(interface)

标签 c# .net com rhino-mocks

我有一个必须在我的应用程序中引用的 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/

相关文章:

c# - 在 VS2010 中调试 COM dll

c# - 如何将图片合并到 WriteableBitmap 中?

.net - 64 到 32 位互操作 - 如何?

c# - 上限双两位数点后

c# - 以编程方式将项目添加到弹出窗口

c# - 使用 C# 进行 URL 编码

C# 计算目录大小

.net - ASP.NET Core - 将加密 key 存储到 Redis

C# 从不同的表单类调用方法?

c++ - NULL指针,以为好像被初始化了