当单元测试asp.net控制器时,你不必以某种方式模拟httpcontextbase吗?
我的所有控制器都继承自我编写的自定义控制器类(它只是向原始控制器类添加了一些常用属性)。 就像它一样:
public class MyController : Controller
{
protected override void OnActionExecuting(System.Web.Mvc.ActionExecutingContext context)
{
// look for a specific cookie
}
}
所以我真的想开始对我的控制器进行单元测试,只是不确定我是如何模拟控制器类以及随之而来的httpcontext。
答案 0 :(得分:2)
以下是如何使用Moq设置Mock HttpContextBase的示例:
var httpCtxStub = new Mock<HttpContextBase>();
var controllerCtx = new ControllerContext();
controllerCtx.HttpContext = httpCtxStub.Object;
sut.ControllerContext = controllerCtx;
// Exercise and verify the sut
其中sut
表示被测系统(SUT),即您要测试的控制器。