单元测试 – 如何在MVC 6中存根/模拟AuthenticationManager?
发布时间:2020-12-16 07:29:43 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试对一个直接与this.HttpContext.Authentication进行身份验证的MVC 6控制器进行单元测试.我没有使用Identity Framework,而是直接与Cookie Authentication中间件交互. 根据我在MS看到的一些例子,我一直在使用DefaultHttpContext进行测试.问题是Defaul
我正在尝试对一个直接与this.HttpContext.Authentication进行身份验证的MVC 6控制器进行单元测试.我没有使用Identity Framework,而是直接与Cookie Authentication中间件交互.
根据我在MS看到的一些例子,我一直在使用DefaultHttpContext进行测试.问题是DefaultHttpContext上的AuthenticationManager属性是只读的,所以我不确定如何模拟它. 如果我不嘲笑它,我会在调用时收到一条错误,指出“我的测试中没有配置验证处理程序来处理该方案:Cookies”: HttpContext.Authentication.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme,claimsPrincipal,authProperties); 解决方法
我有同样的问题,我终于做了一些嘲弄
我用Moq var claimPrincipal = new ClaimsPrincipal(); var mockAuth = new Mock<AuthenticationManager>(); mockAuth.Setup(c => c.SignInAsync("YourScheme",claimPrincipal)).Returns(Task.FromResult("done")); var mockContext = new Mock<HttpContext>(); mockContext.Setup(c => c.Authentication).Returns(mockAuth.Object); var fakeActionContext = new ActionContext(mockContext.Object,new RouteData(),new ControllerActionDescriptor()); var contContext = new ControllerContext(fakeActionContext); 然后将该控制器上下文传递给您要测试的控制器 var controller = new TestedController(Your attribute) { ControllerContext = contContext }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – ValidationGroup的RequiredFieldValidator不验证
- 来自ASP.NET MVC站点的“无效的JSON原语:alihack”错误
- 将ASP.NET应用程序本地化为普通话
- asp.net-web-api – Web API / MVC 6中的安全JSON Web令牌
- asp.net – 禁用按钮但看起来很活跃
- ASP.NET WebAPI中的模拟和异步
- asp.net – Azure网站上脚本/样式的长时间等待(TTFB)时间
- asp.net-mvc-2 – 使用Ninject返回null的HttpHandler属性注
- asp.net – 我应该关注受感染的zip文件吗?
- asp.net-mvc – MetadataTypeAttribute在DNX Core 5.0中不可
推荐文章
站长推荐
- ASP.NET Core Project.json文件(5)
- ASP.Net在页面中的页面/控件上调用Dispose,还是必
- 从ASP.NET Core 3.0 preview 特性,了解CLR的Gar
- ASP.NET MVC 3 Ajax.BeginForm和Html.TextBoxFor
- asp.net – .NET JIT编译器会优化方法调用吗?
- asp.net-mvc – 如何使用asp.net mvc razor在视图
- ASP.NET开发服务器或本地主机IIS?
- asp.net中.aspx页面中各种符号的含义
- ASP.NET AJAX AsyncFileUpload UploadedComplete
- asp.net – nhibernate死锁
热点阅读