【问题标题】:How to Unit Test Asp.Net MVC Identity UserManager.ChangePasswordAsync如何对 Asp.Net MVC Identity UserManager.ChangePasswordAsync 进行单元测试
【发布时间】:2017-01-31 20:07:55
【问题描述】:

我正在为我的家庭控制器编写单元测试用例,在家庭控制器中,我有一个名为 MyProfile 的操作方法,它调用 UserManager 类中的 ChangePasswordAsync 方法。如何测试应用程序用户管理器

下面是我的控制器代码

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> MyProfile(ChangePasswordViewModel model)
{
  if (!ModelState.IsValid)
     {
       return View(model);
     }
var result = await UserManager.ChangePasswordAsync(User.Identity.GetUserId(), model.OldPassword, model.NewPassword);
    if (result.Succeeded)
       {
     var user = await UserManager.FindByIdAsync(User.Identity.GetUserId());
      if (user != null)
        {
      await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
       }
      var verification_uid = Guid.NewGuid().ToString();


        }

【问题讨论】:

    标签: c# asp.net-mvc unit-testing moq


    【解决方案1】:

    你没有。这是测试框架的主要示例,您不应该这样做。您需要为您的应用程序代码编写测试,而不是为 Identity 或 ASP.NET 的任何其他部分编写测试。该代码已通过 Microsoft 的良好测试。您可以放心地假设调用ChangePasswordAsync 实际上会更改用户的密码。否则,您正在运行的身份版本将无法通过测试运行并且永远不会发布。

    【讨论】:

    • file-->mvc 5 中的新项目生成用于测试控制器的测试代码....您如何建议测试更改密码 ActionResult?
    • 使用一个密码模拟用户,使用不同的密码运行操作。用户的断言密码是新密码而不是旧密码。非常标准的测试设置。
    【解决方案2】:

    我能够在测试中测试我的控制器代码。它很简单并且可以完成工作,但请记住,控制器代码是应用程序层,对我的测试来说或多或少是一个黑匣子......这意味着 ChangePasswordAsync 正在按预期工作 - 在幕后。我还必须编写自己的测试代码,以在我的测试中按角色获取用户列表以添加声明,因此我仍在学习。希望这可以帮助!

    <TestMethod()> Public Sub Index()
    
            ' Arrange
            Dim controller As New HomeController()
    
            ' Act
            Dim result As ViewResult = DirectCast(controller.Index(), ViewResult)
    
            ' **Assert that your change password returns the expected model**
            Assert.IsNotNull(result)
        End Sub
    

    【讨论】:

      猜你喜欢
      • 2011-07-27
      • 2010-10-22
      • 1970-01-01
      • 2016-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-15
      • 1970-01-01
      相关资源
      最近更新 更多