簡體   English   中英

ASP.Net.Core userManager.CreateAsync

[英]ASP.Net.Core userManager.CreateAsync

當我調試測試時,我看到它通過等待userManager.CreateAsync(用戶),但然后它進入catch它只應該去,如果它是空的,它不是。 這是控制器:

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.) ---> 

我的問題是我如何進行剩下的測試,而不是當我創建用戶時它會被捕獲。

我不確定您的功能正在嘗試執行什么操作。 您嘗試獲取用戶,然后嘗試創建用戶,然后列出所有用戶,然后返回原始獲取用戶請求的ID。

如果用戶最初不存在那么

ModelConverter.ViewModelToModel.GetUser(userVM)

找不到用戶時會返回空對象還是引發異常? 如果它是前者,那么

return user.Id;

將引發一個null異常。

此外,創建和列出用戶行似乎與該功能的其余部分無關,因為您沒有將他們的響應用於任何事情。 此代碼示例功能的完整副本嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM