我可以将Moq与MvcContrib.TestHelper一起使用吗?

时间:2011-06-27 17:36:16

标签: asp.net-mvc mocking moq rhino-mocks mvccontrib-testhelper

我正在开发我的第一个ASP .NET MVC项目,在此之前我只使用Rhino.Mocks用于桌面应用程序。

已经有一段时间了,所以我决定找出现场使用的内容 在阅读了Moq的一些赞美之后,我决定采用它 (我喜欢有些人可能称之为lambda mis-and overuse)。

但是我也听到了对MvcContrib TestHelper框架的赞扬,似乎依赖于Rhino.Mocks

我需要知道 TestHelper是否强制使用Rhino.Mocks 。我不想在我的测试中混合两个不同的模拟框架,所以如果TestHelper是特定于Rhino的,我将不得不决定

  • 为TestHelper切换到Rhino.Mocks(悲伤但很可能);
  • 为了使用Moq(不太可能)而放弃TestHelper。

我真的希望TestHelper在其公共API中独立于Rhino.Mocks,但我不是百分之百确定。
有人(dis)可以证实吗?

2 个答案:

答案 0 :(得分:3)

我不确定何时更改,但TestControllerBuilder现在采用可选的IMockFactory<T>参数。我发现的问题是,如果你没有传入,它首先默认为RhinoMocks,然后默认为Moq,两者都作为代理。如果您像我一样使用StructureMap,它将始终使用RhinoMocks。我真的希望有一种类型的标志告诉TestControllerBuilder使用哪一个。

要强制构建器使用Moq,您可以传入一个反映回Moq的新IMockFactory<T>类。在内部,MvcContrib有一个完美地完成这个任务的类,但它不能公开访问。我不确定他们为什么不暴露它。

我没有创建自己的IMockFactory<T>实现,而是选择深入研究MvcContrib代码并将MoqFactoryMoqProxy类复制/复制到我自己的解决方案中并将它们传递给TestControllerBuilder。感觉真的很脏,但它完成了工作,让我用Moq的内容。

答案 1 :(得分:2)

  

我需要知道TestHelper是否强行使用Rhino.Mocks

是的,它确实强迫你使用Rhino Mocks。 TestHelperBuilder类中的所有属性(如Request,Response,Session,HttpContext,...)都与Rhino Mocks存在关联,并等待您对它们写下期望。

相关问题