【问题标题】:Testing Response.SetCookie() with MvcContrib使用 MvcContrib 测试 Response.SetCookie()
【发布时间】:2012-07-05 01:15:13
【问题描述】:
在我的控制器操作中,我使用 Response.SetCookie(myCookie) 方法设置了 Cookie。
在我的单元测试方法中,我想使用 Mock 或更好的 Stub 来检查所有参数是否已正确设置。我正在使用 MvcContrib TestHelper 设置 HttpContext 但我不知道如何将我的假 Response 对象传递给它。我正在使用 Moq 和 MvcContrib。
【问题讨论】:
标签:
asp.net-mvc-3
unit-testing
【解决方案1】:
您需要自己在 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();
}
}