小编Rho*_*age的帖子

每次使用"不允许"时,使用ASP身份登录失败(即使"电子邮件"和"用户名"具有相同的值))

注册用户工作正常,因为它通过以下行登录:

await _signInManager.SignInAsync(user, isPersistent: model.RememberMe);
Run Code Online (Sandbox Code Playgroud)

但是如果我想再次使用同一个用户登录则不起作用(任务结果总是返回"Not Allowed").

var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: true);
Run Code Online (Sandbox Code Playgroud)

我确实知道PasswordSignInAsync需要一个USERNAME,而不是一个EMAIL - 但它们对我的应用程序是一样的.

我已经尝试了登录方法的每个变体,包括检查用户和密码是否正确(这些都是成功的),传入用户对象,更改ViewModel属性名称等.

什么需要改变的想法?

类似的上下文问题:ASP.NET身份提供程序SignInManager保持返回失败

谢谢.

c# asp.net asp.net-mvc .net-core asp.net-core

8
推荐指数
2
解决办法
2853
查看次数

如何使用Entity Framework和Moq进行单元测试?

我是Moq的新手,想要像数据的后备存储一样使用它 - 但是没有触及实时数据库.

我的设置如下:

  • UnitOfWork包含所有存储库,用于整个应用程序的数据访问.
  • Repository表示由DbContext提供的直接挂钩到DbSet.
  • DbContext包含所有DbSet.

这是我到目前为止的测试:

        // ARRANGE
        var user = new User()
        {
            FirstName = "Some",
            LastName = "Guy",
            EmailAddress = "some.guy@mockymoqmoq.com",
        };

        var mockSet = new MockDbSet<User>();
        var mockContext = new Mock<WebAPIDbContext>();

        mockContext.Setup(c => c.Set<User>()).Returns(mockSet.Object);

        // ACT
        using (var uow = UnitOfWork.Create(mockContext.Object))
        {
            uow.UserRepository.Add(user);
            uow.SaveChanges();
        }

        // ASSERT
        mockSet.Verify(u => u.Add(It.IsAny<User>()), Times.Once());
Run Code Online (Sandbox Code Playgroud)

我的测试似乎是成功的,因为它可以验证用户是否已添加到模拟DbSet中 - 但我需要做的是实际获取该数据并对其执行进一步的断言(这只是一个临时测试).

请指教,测试框架正在努力.另外,如果它们更容易使用,我可以选择转移到其他测试框架.

谢谢.

更新:这是我的工作代码.

单元测试

        // ARRANGE
        var user = new User()
        {
            FirstName = "Some",
            LastName = "Guy",
            EmailAddress = "some.guy@mockymoqmoq.com", …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing entity-framework moq entity-framework-6

7
推荐指数
1
解决办法
6051
查看次数