2

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

我新建了一个 TestControllerBuilder 和我的控制器,当我尝试在其上调用 InitializeController 时出现异常:

System.TypeInitializationException:“图像”的类型初始化程序引发异常。---> System.Web.HttpException: 应用程序相对虚拟路径 '~/Content/Images/add.gif' 不能设为绝对路径,因为应用程序的路径未知。

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

我试过这个 T4MVCHelpers.ProcessVirtualPath() 但是当它调用 VirtualPathUtility.ToAbsolute() 方法时,我在那里尝试的几乎所有东西都会引发错误。

我毫不怀疑我做错了什么。我对 TestControllerBuiler 将为我设置我的模拟 HTTPContexts 的理解是否不正确?我可以告诉它忽略图像内容吗?

请帮助n00b。一个关于如何使用 TestHelper 和 ProcessVirtualPath 的简单示例会很棒。

更新

对于那些遇到类似错误的人,我的原因是因为在控制器构造函数中使用了 httpcontext。就我而言,它在生成的强类型图像路径 T4MVC 上出错。

4

1 回答 1

0

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

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

T4MVCHelpers.ProcessVirtualPath = p => VirtualPathUtility.ToAbsolute(p, "/App");
于 2014-06-19T15:08:44.813 回答