注册用户工作正常,因为它通过以下行登录:
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保持返回失败
谢谢.
我是Moq的新手,想要像数据的后备存储一样使用它 - 但是没有触及实时数据库.
我的设置如下:
这是我到目前为止的测试:
// 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)