我正在开发一个应用程序,在这个应用程序中,我需要模拟一个用户管理器,但从中得到一个空响应
CreateAsync
。以下是我的服务和单元测试代码。
[Fact]
public async Task RegisterUser_Exceptions()
{
var configuration = new MapperConfiguration(cfg => cfg.AddProfile<UserMapperProfile>());
var mapper = configuration.CreateMapper();
var userStoreMock = new Mock<IUserStore<AppUser>>();
var userManagerMock = new Mock<UserManager<AppUser>>(
userStoreMock.Object,
new Mock<IOptions<IdentityOptions>>().Object,
new Mock<IPasswordHasher<AppUser>>().Object,
new IUserValidator<AppUser>[0],
new IPasswordValidator<AppUser>[0],
new Mock<ILookupNormalizer>().Object,
new Mock<IdentityErrorDescriber>().Object,
new Mock<IServiceProvider>().Object,
new Mock<ILogger<UserManager<AppUser>>>().Object);
userManagerMock.Setup(x => x.CreateAsync(It.IsAny<AppUser>(), It.IsAny<string>()))
.ReturnsAsync(IdentityResult.Success);
var userManagementService = new UserManagementService(userManagerMock.Object, mapper);
var userRegistrationDto = new UserRegisterationDto
{
email = "[email protected]",
msisdn = "24242455",
externalUserId = "external-id"
};
var result = await userManagementService.RegisterUserAsync(userRegistrationDto);
Assert.NotNull(result);
Assert.True(result.Succeeded);
userManagerMock.Verify(x => x.CreateAsync(It.IsAny<AppUser>(), userRegistrationDto.email), Times.Once);
}
服务器管理器:
public class UserManagementService : IUserManagementService
{
private readonly UserManager<AppUser> _userManager;
private readonly IMapper _mapper;
public UserManagementService(UserManager<AppUser> userManager, IMapper mapper)
{
_userManager = userManager;
_mapper = mapper;
}
public async Task<IdentityResult> RegisterUserAsync(UserRegisterationDto userRequest)
{
var appUser = _mapper.Map<UserRegisterationDto, AppUser>(userRequest);
var result = await _userManager.CreateAsync(appUser);
return result;
}
}
结果来自
CreateAsync
总是
null
.