在我的控制器操作中,我用Response.SetCookie(myCookie)方法设置了Cookie。在我的单元测试方法中,我想使用Mock或更好的Stub来检查是否所有参数都已正确设置。我正在使用MvcContrib TestHelper来设置HttpContext,但是我不知道如何将我的伪响应对象传递给它。我使用的是Moq和MvcContrib。
发布于 2012-07-05 01:15:13
您需要自己模拟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();
}
}https://stackoverflow.com/questions/9063313
复制相似问题