如何使用Success == true构造IdentityResult

jak*_*don 28 c# rhino-mocks asp.net-identity

我有一个注入了Microsoft.AspNet.Identity.UserManager的类,我希望userManager.CreateAsync(user,password)方法返回一个IdentityResult.Succeeded = true的Task.但是,IdentityResult唯一可用的构造函数是失败构造函数,它们将导致Succeeded属性为false.

如何创建具有Succeeded == true的IdentityResult?IdentityResult没有实现接口,而且Succeeded不是虚拟的,所以我没有看到任何通过Rhino Mocks(我用作我的模拟框架)创建模拟对象的明显方法.

我的方法做了类似下面的事情.提供此示例以说明为什么我可能想要模拟它.

  public async Task<IdentityResult> RegisterUser(NewUser newUser)
    {
        ApplicationUser newApplicationUser = new ApplicationUser()
        {
            UserName = newUser.UserName,
            Email = newUser.Email
        };

        IdentityResult identityResult = await applicationUserManager.CreateAsync(newApplicationUser, newUser.Password);

        if(identityResult.Succeeded)
        {
            someOtherDependency.DoSomethingAmazing();
        }

        return identityResult;
    }
Run Code Online (Sandbox Code Playgroud)

我正在尝试编写一个单元测试,以确保在identityResult.Succeeded为true时调用someOtherDependency.DoSomethingAmazing().谢谢你的帮助!

jt0*_*000 44

静态IdentityResult.Success属性是否有效?http://msdn.microsoft.com/en-us/library/microsoft.aspnet.identity.identityresult.success(v=vs.108).aspx

编辑:要添加更多细节,您似乎要做的是让您的模拟CreateAsync返回Suceeded为true的IdentityResult.为此,我将从您的模拟中返回IdentityResult.Success.不应该需要模拟IdentityResult本身.

  • 啊,我误解了这是什么.static属性实际上返回一个成功的IdentityResult.奇怪的.无论如何,这确实是我所需要的.谢谢! (3认同)
  • 可能值得更清楚地说明 - 获得"成功"结果的方法是使用IdentityResult.Success静态属性来生成Succeeded == true的结果实例.这是我能看到获得+ ve响应的唯一方式. (3认同)

Sab*_*bel 20

要使Succeeded属性等于True,请使用以下任一示例:

return IdentityResult.Success;
IdentityResult result = IdentityResult.Success;
Run Code Online (Sandbox Code Playgroud)

  • 到目前为止最好的答案。非常容易理解,谢谢! (2认同)