asp.net-mvc – 如何在MVC5中从AccountController模拟Applicatio
发布时间:2020-12-16 07:25:24 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试在AccountController上编写Register Test for Register Method 我正在使用moq以及从Unit Test模拟ApplicationUserManager,ApplicationRoleManager和ApplicationSignInManager的正确方法是什么. public AccountController(ApplicationUserManager u
我正在尝试在AccountController上编写Register Test for Register Method
我正在使用moq以及从Unit Test模拟ApplicationUserManager,ApplicationRoleManager和ApplicationSignInManager的正确方法是什么. public AccountController(ApplicationUserManager userManager,ApplicationRoleManager roleManager,ApplicationSignInManager signInManager) { UserManager = userManager; RoleManager = roleManager; SignInManager = signInManager; } public ApplicationUserManager UserManager { get { return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>(); } private set { _userManager = value; } } private ApplicationSignInManager _signInManager; public ApplicationSignInManager SignInManager { get { return _signInManager ?? HttpContext.GetOwinContext().Get<ApplicationSignInManager>(); } private set { _signInManager = value; } } private ApplicationRoleManager _roleManager; public ApplicationRoleManager RoleManager { get { return _roleManager ?? HttpContext.GetOwinContext().Get<ApplicationRoleManager>(); } set { _roleManager = value; } } 解决方法
这可能不是你所需要的,但看一看,也许你会明白这一点.
AccountController.cs [HttpGet] [Route("register")] [AllowAnonymous] public ActionResult Register() { if (IsUserAuthenticated) { return RedirectToAction("Index","Home"); } return View(); } public bool IsUserAuthenticated { get { return System.Web.HttpContext.Current.User.Identity.IsAuthenticated; } } AccountControllerTests.cs [Test] public void GET__Register_UserLoggedIn_RedirectsToHomeIndex() { // Arrange HttpContext.Current = CreateHttpContext(userLoggedIn: true); var userStore = new Mock<IUserStore<ApplicationUser>>(); var userManager = new Mock<ApplicationUserManager>(userStore.Object); var authenticationManager = new Mock<IAuthenticationManager>(); var signInManager = new Mock<ApplicationSignInManager>(userManager.Object,authenticationManager.Object); var accountController = new AccountController( userManager.Object,signInManager.Object,authenticationManager.Object); // Act var result = accountController.Register(); // Assert Assert.That(result,Is.TypeOf<RedirectToRouteResult>()); } [Test] public void GET__Register_UserLoggedOut_ReturnsView() { // Arrange HttpContext.Current = CreateHttpContext(userLoggedIn: false); var userStore = new Mock<IUserStore<ApplicationUser>>(); var userManager = new Mock<ApplicationUserManager>(userStore.Object); var authenticationManager = new Mock<IAuthenticationManager>(); var signInManager = new Mock<ApplicationSignInManager>(userManager.Object,Is.TypeOf<ViewResult>()); } private static HttpContext CreateHttpContext(bool userLoggedIn) { var httpContext = new HttpContext( new HttpRequest(string.Empty,"http://sample.com",string.Empty),new HttpResponse(new StringWriter()) ) { User = userLoggedIn ? new GenericPrincipal(new GenericIdentity("userName"),new string[0]) : new GenericPrincipal(new GenericIdentity(string.Empty),new string[0]) }; return httpContext; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 在ASP.NET中验证上载文件的ContentType
- asp.net-core – 如何使用asp-for标签绑定数组?
- asp.net – 我能指望ctl00_PagePlaceHolder_myId保持不变吗
- asp.net-mvc – 自定义HtmlHelper呈现文本而不是标记
- asp.net-mvc-4 – 如何通过Elastic Beanstalk手动将.NET MV
- Asp.net利用JQuery AJAX实现无刷新评论思路与代码
- 如何在IIS10中正确启动asp.net应用程序
- asp.net-mvc – 如何使用ViewBag创建一个下拉列表?
- asp.net-mvc – ASP.NET MVC ActionLink外部区域
- asp.net-web-api – 如何让ASP.Net Web API和OData将字符串