c# - 使用 Cookie 进行 MVC 单元测试

标签 c# asp.net-mvc unit-testing cookies

我有两个项目用于单元测试和我的 Web 项目。

        AuthenticationController controller = new AuthenticationController();
        ViewResult result = controller.LogOut() as ViewResult;
        Assert.IsNotNull(result);

在项目中,我将传递 http cookie 和授权请求。

当我运行 LogOut 测试时,它会在获取 cookie 时失败。有什么方法可以通过创建假 cookie 或任何其他方式来克服这个问题吗?

提前致谢。

最佳答案

希望对您有所帮助!或者使用模拟框架。

AuthenticationController controller = new AuthenticationController();
var httpContext = new MockHttpContext();
//set cookie

controller.ControllerContext = new ControllerContext(httpContext, controller);

public class MockHttpContext : HttpContextBase
{
    readonly HttpRequestBase _request;

    public MockHttpContext()
    {
        _request = new MockHttpRequest();
    }

    public override HttpRequestBase Request
    {
        get { return _request; }
    }

    class MockHttpRequest : HttpRequestBase
    {
        readonly HttpCookieCollection _cookies;

        public MockHttpRequest()
        {
            _cookies = new HttpCookieCollection();
        }

        public override HttpCookieCollection Cookies
        {
            get
            {
                return _cookies;
            }
        }
    }
}

关于c# - 使用 Cookie 进行 MVC 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39078049/

相关文章:

c# - 枚举本地化

c# - 如何确保只有我的程序可以访问命名管道?

c# - 安排在 ASP.NET MVC 中每天上午 8 点运行方法

asp.net-mvc - Asp.net mvc 站点地图中的动态 Url 和标题

unit-testing - 不使用部分模拟?他们在网络应用程序中也意味着吗?

java - 在 Intellij 中显示一种方法的覆盖率数据

c# - 使用自己的属性扩展 .NET MembershipUser

c# - 如何覆盖默认的 "global"键盘快捷键并创建我自己的键盘快捷键?

javascript - 有没有办法获取 "un-render"一堆 JavaScript 文件?

typescript - NgRx:如何声明由 Action 创建者创建的 Action 的显式类型?