У меня проблема с тем, что я хочу написать модульный тест пользовательской функции в моей службе пользователя. Но эта пользовательская служба является производной от asp. net основного идентификатора пользователя. Я хочу расширить функциональность менеджера пользователей, поэтому я получил его. Поэтому я хочу проверить метод CreateCRohMUserAsyn c
public class UserService : UserManager<User>, IUserService
{
public UserService(IUserStore<User> store,
IOptions<IdentityOptions> optionsAccessor,
IPasswordHasher<User> passwordHasher,
IEnumerable<IUserValidator<User>> userValidators,
IEnumerable<IPasswordValidator<User>> passwordValidators,
ILookupNormalizer keyNormalizer, IdentityErrorDescriber errors, IServiceProvider services, ILogger<UserManager<User>> logger) : base(store, optionsAccessor, passwordHasher, userValidators, passwordValidators, keyNormalizer, errors, services, logger)
{
}
public async Task<IdentityResult> CreateCRohMUserAsync(User user)
{
PasswordGenerator pwGenerator = new PasswordGenerator();
var password = pwGenerator.Generate();
user.UserName = GetUniqueUserName(user.FirstName, user.LastName);
var result = await base.CreateAsync(user, password);
if (result.Succeeded)
{
//TODO: send mail to created user
}
return result;
}
public string GetUniqueUserName(string firstName, string lastName)
{
if (string.IsNullOrEmpty(firstName))
{
throw new ArgumentNullException(nameof(firstName), "firstName can not be null");
}
if (string.IsNullOrEmpty(lastName))
{
throw new ArgumentNullException(nameof(lastName), "lastName can not be null");
}
return lastName + firstName.Substring(0, 2) + Users.Count() + 1;
}
}
}
В моем модульном тесте я хочу смоделировать base.CreateAsyn c (пользователь, пароль) и функциональность Users.Count () моего базового класса. Но я не знаю, как это сделать. Или моя реализация неверна? Как я могу протестировать этот метод?