4

我只是在寻找一个明确的答案:是否有任何适用于 Mono 的模拟框架,如 Moq 或 RhinoMocks?是的,我意识到我可以进行手动模拟,但我正在谈论一些具有良好 API 的东西......比如 Moq 或 RhinoMocks。我正在专门使用 MonoTouch,但我很惊讶我什至找不到任何直接用于 MonoTouch 的模拟框架。

从我的阅读来看,MonoTouch没有 mocking 框架的原因之一似乎是因为它们中的大多数使用 Reflection.Emit,它当然不会通过 Apple 对 AppStore 提交的静态分析。

但是,AppStore 应用程序呢?许多企业应用程序分布在 AppStore 之外,因此不受静态分析的影响。而且在企业应用程序中使用模拟框架是很常见的。

那么,为什么我们没有看到 MonoTouch 应用程序更频繁地使用模拟框架呢?

4

2 回答 2

3

好吧,我发现可以为 Mono 编译来自 GitHub 的 Moq 源代码。但是您还需要Castle.Core

但是,您尝试使用 Mono 2.10.x(撰写本文时为 2.10.11)构建 Castle.Core,您将收到有关 PriorityBehaviorExtensions.cs 中泛型类型约束的编译错误 (CS0314)。这是 Mono 的 2.10.x 版本中的一个错误。

为了构建 Castle.Core,我必须使用 Mono 3.0.10 构建。一旦满足了该依赖关系,就可以使用 Castle.Core 构建 Moq。

我仍然需要做一些测试以确保一切正常。只是想在我出门之前把这一切都写下来。希望这可以帮助某人。

感谢 Moq (Daniel Cazzulino) 的作者为我指明了正确的方向。

编辑:这对我不起作用。我能够很好地构建 DLL,但它们针对的是错误的框架。问题是我似乎无法构建针对 MonoTouch 的 Castle.Core 库,因为 Castle.Core 所利用的 .NET 的某些功能在 Mono 中根本不可用。因此,如果无法为 MonoTouch 构建 Castle.Core,我也无法为 MonoTouch 构建 Moq 甚至 RhinoMocks。

于 2013-04-23T22:41:12.233 回答
2

我发现Simple.Mocking可以与 Mono 一起使用。它不像其他一些模拟框架那么整洁,但它确实有效!

于 2013-08-15T11:17:06.610 回答