使用cookie进行MVC单元测试

本文关键字:单元测试 MVC 进行 cookie 使用 | 更新日期: 2023-09-27 18:03:20

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

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

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

当我运行LogOut测试时,它将在获取cookie时失败。有没有办法通过制造假饼干或其他方法来克服这一点?

使用cookie进行MVC单元测试

希望这对你有帮助!或者使用mock框架。

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;
            }
        }
    }
}