【问题标题】:MVC Unit Testing with Cookies使用 Cookie 进行 MVC 单元测试
【发布时间】:2016-08-22 19:28:40
【问题描述】:
我有两个项目用于单元测试和我的网络项目。
AuthenticationController controller = new AuthenticationController();
ViewResult result = controller.LogOut() as ViewResult;
Assert.IsNotNull(result);
在项目中,我将传递 http cookie 和授权请求。
当我运行 LogOut 测试时,它会在获取 cookie 时失败。有没有办法通过创建假 cookie 或任何其他方式来克服这个问题?
提前致谢。
【问题讨论】:
标签:
c#
asp.net-mvc
unit-testing
cookies
【解决方案1】:
希望这会有所帮助!或者使用模拟框架。
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;
}
}
}
}