我正在尝试使用 Moq 3.0 模拟 IUnityContainer

我收到 BadImageFormatException,但在调试时没有收到。从表面上看,我并不是唯一遇到这个问题的人。

这里

这是最小起订量的注册问题

这里

我只是好奇是否有人找到了解决方案......我发现的最接近的是一个很好的解决方案,它使用 Roy Osherove 的 RhinoMock

这里

但我真的很喜欢起订量!所以我真的不想切换到 Rhino Mock,但如果必须的话我会的

提前致谢!

有帮助吗?

解决方案

您不知道。

嘲笑容器的唯一原因是,如果你路过它周围。这是一个反模式。

相反要构成在应用程序的入口点的整个对象图,或组合物根

如果你需要动态创建实例,使用的自动工厂

有关的测试时,可以任一构建被测物和模拟对象传递到构造或建立在测试一个新的容器中,并与它注册模拟对象。

其他提示

您是否尝试过模拟 UnityBaseContainer 或 UnityContainer 而不是 IUnityContainer? 这个帖子 作者:罗里·普里姆罗斯?他正在处理RhinoMocks,但因为我认为这个问题与Moq内部使用Castle有关,所以你也许可以通过这种方式解决问题。

你需要一个全面的模仿对象?你能否简单地实施假车吗?即,在实施IUnityContainer接口的测试实例化并覆盖你需要与之交互的方法?

我已经掉进陷阱不止一次在想,因为我有一个模拟对象库,我应该用它在我的系统隔离每个依赖。通常情况下,做一些简单的让我想用低得多的挫折水平的结果。

由于这个问题我没有嘲笑IUnityContainer,我用UnityContainer的一个真正的实例,而不是。这不是理想的,但我可以通过检查该容器可以解决类型适当测试注册。

您可以模拟并使用IServiceLocator当你用它来解决你的类的类型,甚至更好,使用登记与容器和使用的工厂来代替。

你在 Win x64 上运行这个吗?看看这个 . 。它清楚地表明。

当动态链接库(.dll 文件)或可执行文件(.exe 文件)的文件格式不符合公共语言运行时期望的格式时,将引发此异常。

另外,发现这篇博客文章建议将编译标志从 Any CPU 更改为 x86 可能会有所帮助。 http://filips.net/archives/2008/01/17/getting-badimageformatexception-in-64-bit-windows/

编辑:

还可以看看 所以线程。也看看你的构建配置管理器。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top