加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 在2K3构建服务器上的单元测试中不允许使用’应用程序

发布时间:2020-12-15 22:19:08 所属栏目:asp.Net 来源:网络整理
导读:我正在嘲笑HttpRequestBase,所以我可以在测试代码中创建一个 HtmlHelper并围绕 HtmlHelper扩展方法编写测试.我这样做是设置代码的一部分: httpRequestBase.Stub(h = h.ApplicationPath).Return("~/");httpRequestBase.Stub(h = h.AppRelativeCurrentExecuti
我正在嘲笑HttpRequestBase,所以我可以在测试代码中创建一个 HtmlHelper并围绕 HtmlHelper扩展方法编写测试.我这样做是设置代码的一部分:
httpRequestBase.Stub(h => h.ApplicationPath).Return("~/");
httpRequestBase.Stub(h => h.AppRelativeCurrentExecutionFilePath).Return(appPath);
httpRequestBase.Stub(h => h.PathInfo).Return("");

在两个开发机器上(一个运行XP,一个Vista 64位)工作正常.但是,在Windows Server 2003构建计算机上,当我在HtmlHelper上调用RouteLink()时测试失败,如下所示:

System.ArgumentException:此处不允许应用程序相对虚拟路径’?/’.
在System.Web.VirtualPath.Create(String virtualPath,VirtualPathOptions选项)

在这两种情况下,我都使用NUnit 2.4.8和NUnit GUI作为测试运行器.据我所知,其他所有内容都是相同的:相同版本的RhinoMocks(3.5),相同版本的ASP.NET MVC(RTM).我尝试从开发机器上复制二进制文件,而不是使用构建机器上的二进制文件,这没什么区别.

当我将设置代码中的第一行更改为:

httpRequestBase.Stub(h => h.ApplicationPath).Return("/");

测试通过所有机器.

知道为什么吗?

解决方法

“?/”不是ApplicationPath的有效值. “?/”语法的重点是允许您指定相对于ApplicationPath的URL.

对于rooted站点,值应为“/”.对于虚拟目录中的站点,它应该是类似“/ mysite”的值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读