如何在ASP.NET 5中模拟UserManager

哈利9k

我正在编写用于在ASP.NET 5应用程序中管理用户的UI 我需要显示UI中UserManager返回的任何错误。IdentityResult在视图模型中传回错误,但是在测试我的代码时,我有些失落。

什么是嘲笑的最佳方法UserManagerASP.NET 5

我是否应该继承UserManager并覆盖所有正在使用的方法,然后将其版本注入UserManagerController测试项目中的实例中

乔治·唐格

我已经在MVC音乐商店示例应用程序的帮助下对其进行了管理。

在单元测试类中,我像这样设置数据库上下文和UserManager:

public class DatabaseSetupTests : IDisposable
{
    private MyDbContext Context { get; }

    private UserManager<ApplicationUser> UserManager { get; }

    public DatabaseSetupTests()
    {
        var services = new ServiceCollection();
        services.AddEntityFramework()
            .AddInMemoryDatabase()
            .AddDbContext<MyDbContext>(options => options.UseInMemoryDatabase());
        services.AddIdentity<ApplicationUser, IdentityRole>()
            .AddEntityFrameworkStores<MyDbContext>();
        // Taken from https://github.com/aspnet/MusicStore/blob/dev/test/MusicStore.Test/ManageControllerTest.cs (and modified)
        // IHttpContextAccessor is required for SignInManager, and UserManager
        var context = new DefaultHttpContext();
        context.Features.Set<IHttpAuthenticationFeature>(new HttpAuthenticationFeature());
        services.AddSingleton<IHttpContextAccessor>(h => new HttpContextAccessor { HttpContext = context });
        var serviceProvider = services.BuildServiceProvider();
        Context = serviceProvider.GetRequiredService<MyDbContext>();
        UserManager = serviceProvider.GetRequiredService<UserManager<ApplicationUser>>();
    }
....
}

然后,我可以在单元测试中使用UserManager,例如:

[Fact]
public async Task DontCreateAdminUserWhenOtherAdminsPresent()
{
    await UserManager.CreateAsync(new ApplicationUser { UserName = "[email protected]" }, "IDoComplyWithTheRules2016!");
    ...
}

如果您的Dependency Injector无法解析IHttpContextAccessor,则将无法创建UserManager实例,因为它依赖于它。我认为(这只是一个假设),在Asp.Net 5中,UserManager确实会在您为用户更改Cookie(声明,角色...)时声明基于Cookie的声明,因此需要一些HttpContext进行登录/注销操作和cookie访问。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在ASP .NET MVC 5 Web应用程序的Seed方法中通过UserManager创建ApplicationUser

来自分类Dev

如何模拟Asp.net身份UserManager的CreateAsync方法

来自分类Dev

如何模拟Asp.net身份UserManager的CreateAsync方法

来自分类Dev

如何在 initialize() 方法中使用 userManager ASP.net MVC 5

来自分类Dev

如何使用ASP.NET MVC 5的UserManager重置密码

来自分类Dev

如何在ASP.NET 5中注册OData

来自分类Dev

如何在ASP.NET 5中使用SignalR

来自分类Dev

如何在ASP.NET 5 MVC中访问缓存?

来自分类Dev

如何在asp.net 5中设置Auth cookie

来自分类Dev

如何在ASP.Net 5中删除文件

来自分类Dev

如何在ASP.NET中删除asp:calendar的“周末”?

来自分类Dev

如何在Asp.Net MVC 4中模拟HttpContext.User.Identity.Name

来自分类Dev

如何在ASP.NET Core 1 MVC 6中模拟IFormFile进行单元/集成测试?

来自分类Dev

如何在Asp.Net MVC 4中模拟HttpContext.User.Identity.Name

来自分类Dev

如何在asp net 5中为“ asp-for”传递字符串值

来自分类Dev

如何在 ASP.NET MVC 5 中使用 applozic

来自分类Dev

如何在 UserManager 类中模拟 GetUserAsync 方法?

来自分类Dev

如何在ASP.NET MVC中重置会话超时

来自分类Dev

如何在Asp.net Core中缓存资源?

来自分类Dev

如何在IIS 8中重新注册ASP.NET?

来自分类Dev

我如何在ASP.NET MVC中隐藏div

来自分类Dev

如何在ASP.NET Web API中接收JSON?

来自分类Dev

如何在ASP.NET MVC中运行作业?

来自分类Dev

如何在ASP.NET MVC中配置HTML压缩

来自分类Dev

如何在asp.net的gridview中创建链接

来自分类Dev

如何在asp.net中调用高图

来自分类Dev

如何在ASP.NET MVC中组织DAL

来自分类Dev

如何在ASP.NET中实施A / B拆分测试?

来自分类Dev

如何在ASP.NET Core中设置cookie validateInterval?

Related 相关文章

热门标签

归档