您需要自己模拟TestControllerBuilder上的HttpContext属性。 HttContext被标记为受保护的,所以你的测试类需要从TestControllerBuilder继承来设置它。我是这样做的:
[TestClass]
public class SampleTest : TestControllerBuilder
{
[TestMethod]
public void TestLogOnActionSetsCookie()
{
var httpContextMock = new Mock<HttpContextBase>();
var responseMock = new Mock<HttpResponseBase>();
httpContextMock.Setup(c => c.Response)
.Returns(responseMock.Object);
responseMock
.Setup(r => r.SetCookie(It.IsAny<HttpCookie>()))
.Verifiable();
var controller = new AccountController();
base.HttpContext = httpContextMock.Object;
base.InitializeController(controller);
controller.LogOn();
responseMock.Verify();
}
}