How to mock UserManager in .Net Core testing?

后端 未结 3 919
再見小時候
再見小時候 2020-12-10 10:59

I have following code. Im trying to running a test case for create user.Following is what i have tried so far.

public class CreateUserCommandHandlerTest
{
          


        
3条回答
  •  醉酒成梦
    2020-12-10 11:47

    aspnet/Identity is opensource so what you can do is see how they mock it themselves.

    Here's how they do it: MockHelpers.cs

    TestUserManager

    public static UserManager TestUserManager(IUserStore store = null) where TUser : class
    {
        store = store ?? new Mock>().Object;
        var options = new Mock>();
        var idOptions = new IdentityOptions();
        idOptions.Lockout.AllowedForNewUsers = false;
        options.Setup(o => o.Value).Returns(idOptions);
        var userValidators = new List>();
        var validator = new Mock>();
        userValidators.Add(validator.Object);
        var pwdValidators = new List>();
        pwdValidators.Add(new PasswordValidator());
        var userManager = new UserManager(store, options.Object, new PasswordHasher(),
            userValidators, pwdValidators, new UpperInvariantLookupNormalizer(),
            new IdentityErrorDescriber(), null,
            new Mock>>().Object);
        validator.Setup(v => v.ValidateAsync(userManager, It.IsAny()))
            .Returns(Task.FromResult(IdentityResult.Success)).Verifiable();
        return userManager;
    }
    

提交回复
热议问题