【问题标题】:ASP.Net MVC unit test exceptionASP.Net MVC 单元测试异常
【发布时间】:2010-02-11 18:41:54
【问题描述】:

我正在使用 Moq 框架进行单元测试。我正在按照此处列出的一些非常有用的说明来帮助我模拟 httpcontext,特别是为了测试 url 引用:

http://my6solutions.com/post/2009/08/18/Mocking-HttpContext-in-ASP-NET-MVC.aspx

一切似乎都可以正常编译,但是在运行测试时出现以下错误:

System.Web.HttpException:使用无效 SimpleWorkerRequest 构造函数。 应用程序路径不能被覆盖 在这种情况下。请用 SimpleWorkerRequest 构造函数 不会覆盖应用程序 路径..

分析时,我发现错误似乎出现在以下行:

var wr = new SimpleWorkerRequest("", "", "", "", writer);

我不知道该怎么做。什么是 SimpleWorkerRequest,它如何在 Moq 中创建 HttpContext?为什么根据调试器我使用它无效??

更新:这是我使用的完整方法,取自上述网站

public static HttpContextBase FakeHttpContext()
        {
            var httpContext = new Mock<HttpContextBase>();
            var request = new Mock<HttpRequestBase>();
            var response = new Mock<HttpResponseBase>();
            var session = new Mock<HttpSessionStateBase>();
            var server = new Mock<HttpServerUtilityBase>();
            var cookies = new HttpCookieCollection();

            httpContext.Setup(x => x.Server).Returns(server.Object);
            httpContext.Setup(x => x.Session).Returns(session.Object);
            httpContext.Setup(x => x.Request).Returns(request.Object);
            httpContext.Setup(x => x.Response).Returns(response.Object);

            response.Setup(x => x.Cookies).Returns(cookies);
            httpContext.SetupGet(x => x.Request.Url).Returns(new Uri("http://www.csuci.edu"));
            httpContext.SetupGet(x => x.Request.UrlReferrer).Returns(new Uri("http://www.csuci.edu"));
            //var writer = new StringWriter();
            //var wr = new SimpleWorkerRequest("", "", "", "", writer);
            //HttpContext.Current = new HttpContext(wr);
            return httpContext.Object;
        }

我注释掉了问题行,这似乎可以解决问题,但我仍然不确定这些行应该做什么以及为什么它们会导致错误。

【问题讨论】:

  • 您可能需要公开更多代码才能了解它为什么不喜欢您正在做的事情...您能在有问题的行之前提供更多代码吗?

标签: asp.net asp.net-mvc unit-testing moq


【解决方案1】:

请参阅上面的更新部分,如果您按照上面链接中提供的示例并删除上面注释掉的特定行,如果您要寻找的只是伪造 UrlReferrer,这似乎可以解决问题,这就是我在之后。不确定这将如何影响假 httpContext 的其余部分,因为我不确定这些行的确切目的是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多