2

在对 asp.net 控制器进行单元测试时,您不必以某种方式模拟 httpcontextbase 吗?

我所有的控制器都继承自我编写的自定义控制器类(它只是向原始控制器类添加了一些通用属性)。所以它就像:

public class MyController : Controller
{
    protected override void OnActionExecuting(System.Web.Mvc.ActionExecutingContext context)
    {
         // look for a specific cookie
    }

}

所以真的很想开始对我的控制器进行单元测试,只是不确定我如何去模拟控制器类和随之而来的 httpcontext。

4

1 回答 1

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),即您要测试的控制器。

于 2009-12-21T19:12:47.260 回答