Moq中UserName的身份错误

时间:2018-03-02 20:49:20

标签: asp.net moq xunit

我尝试在单元测试中设置用户对象属性。此属性正确传递给自定义用户验证程序,并在验证期间验证是否已设置。但是,public class CustomUserValidator : UserValidator<AppUser> { public override async Task<IdentityResult> ValidateAsync(UserManager<AppUser> userManager, AppUser user) { //Here, the user.UserName property is set from the unit test, but the result still has an error for a blank UserName property IdentityResult result = await base.ValidateAsync(userManager, user); List<IdentityError> errors = result.Succeeded ? new List<IdentityError>() : result.Errors.ToList(); if (user.Email.ToLower().EndsWith("@myDomain.com")) { return await Task.FromResult(IdentityResult.Success); } else { errors.Add(new IdentityError { Code = "EmailDomainError", Description = "Only myDomain.com email addresses are allowed" }); } return errors.Count == 0 ? IdentityResult.Success : IdentityResult.Failed(errors.ToArray()); } } 仍显示空白属性错误。

我有这个自定义用户验证器:

[Fact]
        public async void Validate_User_Email()
        {
            //Arrange
            var userManager = GetMockUserManager();
            var customVal = new CustomUserValidator();
            var user = Mock.Of<AppUser>(m => m.UserName == "joe" && m.Email == "joe@example.com");

            //Act
            //try to validate the user 
            IdentityResult result = await customVal.ValidateAsync(userManager.Object, user);

            //Assert
            //demonstrate that there are  errors present
            List<IdentityError> errors = result.Succeeded ? new List<IdentityError>() : result.Errors.ToList();

            //Here there are 2 errors, one for a blank UserName and one (expected) error for the email address
            Assert.Equal(1, errors.Count);
        }

我正在尝试使用Moq和xUnit为电子邮件中的域检查创建测试:

{{1}}

0 个答案:

没有答案