T4MVC并使用MvcContrib.TestHelpers测试获得“相对虚拟路径”错误

时间:2011-08-12 15:02:44

标签: asp.net-mvc-3 t4mvc

我的问题是由于我在MVC中的n00bness,但我正在尝试为使用T4MVC生成的控制器中的函数编写测试。所以我想我也会使用MvcContrib.TestHelper。

我新建一个TestControllerBuilder和我的控制器,当我尝试调用InitializeController时,我得到一个例外:

  

System.TypeInitializationException:'Images'的类型初始值设定项引发了异常。 ---> System.Web.HttpException:应用程序相对虚拟路径'〜/ Content / Images / add.gif'不能绝对,因为应用程序的路径未知。

好的,它正在尝试获取图像并且它们不在测试可执行文件的相对路径中......我该怎么说?

我尝试了这个T4MVCHelpers.ProcessVirtualPath()但是我在那里尝试的几乎所有东西在调用VirtualPathUtility.ToAbsolute()方法时都会抛出错误。

我毫不怀疑我做错了什么。我的理解是错误的,TestControllerBuiler会为我设置我的模拟HTTPContexts吗?我可以告诉它忽略图像的东西吗?

请帮助n00b了。关于如何使用TestHelper和ProcessVirtualPath的一个简单示例将非常棒。

更新

对于那些得到类似错误的人,我的理由是因为httpcontext正在控制器构造函数中使用。在我的情况下,在生成的强类型图像路径T4MVC上出错。

1 个答案:

答案 0 :(得分:0)

您可以通过设置ProcessVirtualPath委托来为T4MVC提供自己的方法。

下面的匿名方法保留了原始实现的精神。

T4MVCHelpers.ProcessVirtualPath = p => VirtualPathUtility.ToAbsolute(p, "/App");