我怎样才能模拟Server.HtmlEncode - 返回null引用

Arn*_*rne 0 asp.net testing asp.net-mvc moq

我正在尝试模拟Server.HtmlEncode(),但我一直有一个空引用异常.我是Moq框架的新手,这是我的代码:

var context = new Mock<HttpContextBase>();
var request = new Mock<HttpRequestBase>();
var response = new Mock<HttpResponseBase>();
var session = new Mock<HttpSessionStateBase>();
var server = new Mock<HttpServerUtilityBase>();

server.Setup(svr => svr.HtmlEncode(It.IsAny<string>())).Returns((string s) => s);
context.Setup(ctx => ctx.Request).Returns(request.Object);
context.Setup(ctx => ctx.Response).Returns(response.Object);
context.Setup(ctx => ctx.Session).Returns(session.Object);
context.Setup(ctx => ctx.Server).Returns(server.Object);
Run Code Online (Sandbox Code Playgroud)

我也尝试过以下方法:

context.Setup(ctx => ctx.Server.HtmlEncode(It.IsAny<string>())).Returns((string s) => s);
Run Code Online (Sandbox Code Playgroud)

我找到了一个解决方案,但它似乎是一个过时的解决方案,因为期望被设置取代.

谢谢,Arne

Dar*_*rov 8

您可以使用静态HttpUtility.HtmlEncode方法,它可以正常工作,您不需要模拟它.

另一个重要的评论:控制器与HTML编码无关.这是视图的责任,所以你可能从错误的角度来看待这个问题.