当我调试测试时,我看到它通过了await userManager.CreateAsync(user),但是它转到了陷阱,只有在它为空的情况下才应该去,而并非如此。 这是控制器:
public async Task<ActionResult<string>> CreateUser(UserVM userVM)
{
ApplicationUser user = ModelConverter.ViewModelToModel.GetUser(userVM);
var x = await userManager.CreateAsync(user);
List<ApplicationUser> users = userManager.Users.ToList();
return user.Id;
}
这是我使用的测试之一:
public void Should_AddShiftExchangeToUser()
{
MPContext context = CleanContext();
UsersController usersController = new UsersController();
try
{
var x = usersController.CreateUser(new ViewModels.UserVM()).Result;
var y = usersController.CreateUser(new ViewModels.UserVM()).Result;
var result = usersController.AddShiftExchange(new ShiftExchangeVM() { RequesterId = x.Value, ReceiverId = y.Value }, x.Value).Result;
Assert.NotNull(result.Value);
ShiftExchange shiftExchange = context.shiftExchanges.FirstOrDefaultAsync(s => s.Id == result.Value).Result;
Assert.NotNull(shiftExchange);
Assert.NotNull(shiftExchange.Receiver);
Assert.NotNull(shiftExchange.Requester);
}
catch (Exception ex)
{
Assert.Null(ex);
}
}
然后我得到这个错误:
Message: Assert.Null() Failure Expected: (null) Actual: System.AggregateException: One or more errors occurred. (Object reference not set to an instance of an object.) --->
我的问题是我如何进行其余的测试,而不是当我成为用户时会被抓住。
答案 0 :(得分:0)
我不确定您的函数正在尝试执行什么操作。您尝试获取用户,然后尝试创建用户,然后列出所有用户,然后返回原始获取用户请求的ID。
如果用户最初不存在,那么
ModelConverter.ViewModelToModel.GetUser(userVM)
在找不到用户或引发异常时,这将返回空对象吗?如果是前者,那么
return user.Id;
将引发空异常。
此外,创建和列出用户行似乎与该功能的其余部分无关,因为您没有将他们的响应用于任何事情。这段代码是该函数的完整副本吗?