gpt4 book ai didi

c# - 如何成功构造 IdentityResult == true

转载 作者:IT王子 更新时间:2023-10-29 04:15:28 25 4
gpt4 key购买 nike

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

如何创建一个具有 Succeeded == true 的 IdentityResult? IdentityResult 没有实现接口(interface)并且 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;
}

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

最佳答案

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

编辑:要添加更多细节,您似乎想要做的是让模拟的 CreateAsync 返回一个 IdentityResult,其中 Suceeded 为真。为此,我只会从您的模拟中返回 IdentityResult.Success。不需要模拟 IdentityResult 本身。

示例:如何设置返回成功身份结果的服务。

    applicationUserManagerMock.Setup(s => 
s.CreateAsync(It.IsAny<ApplicationUser>(), It.IsAny<string>())
).ReturnsAsync(IdentityResult.Success);

关于c# - 如何成功构造 IdentityResult == true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26269104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com