Asp.net mvc 3 使用MvcContrib测试Response.SetCookie()
在我的控制器操作中,我使用Response.SetCookie(mycokie)方法设置Cookie。Asp.net mvc 3 使用MvcContrib测试Response.SetCookie(),asp.net-mvc-3,unit-testing,Asp.net Mvc 3,Unit Testing,在我的控制器操作中,我使用Response.SetCookie(mycokie)方法设置Cookie。 在我的单元测试方法中,我想使用Mock或更好的存根来检查是否所有参数都设置正确。我正在使用MvcContrib TestHelper来设置HttpContext,但我不知道如何将我的假响应对象传递给它。我正在使用Moq和MvcContrib。您需要自己在TestControllerBuilder上模拟HttpContext属性。HttContext被标记为protected,因此您的测试类需要
在我的单元测试方法中,我想使用Mock或更好的存根来检查是否所有参数都设置正确。我正在使用MvcContrib TestHelper来设置HttpContext,但我不知道如何将我的假响应对象传递给它。我正在使用Moq和MvcContrib。您需要自己在TestControllerBuilder上模拟HttpContext属性。HttContext被标记为protected,因此您的测试类需要从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();
}
}
[TestClass]
公共类SampleTest:TestControllerBuilder
{
[测试方法]
public void testlogonactionsetscokie()
{
var httpContextMock=new Mock();
var responseMock=new Mock();
httpContextMock.Setup(c=>c.Response)
.Returns(responseMock.Object);
应答器
.Setup(r=>r.SetCookie(It.IsAny())
.可验证();
var controller=new AccountController();
base.HttpContext=httpContextMock.Object;
基本初始化控制器(控制器);
controller.LogOn();
responseMock.Verify();
}
}