Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 使用MvcContrib测试Response.SetCookie()_Asp.net Mvc 3_Unit Testing - Fatal编程技术网

Asp.net mvc 3 使用MvcContrib测试Response.SetCookie()

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,因此您的测试类需要

在我的控制器操作中,我使用Response.SetCookie(mycokie)方法设置Cookie。
在我的单元测试方法中,我想使用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();
}
}