簡體   English   中英

如何使用用戶管理器功能制作網絡核心庫

[英]How to make a net core library with usermanager functions

我又一次偶然發現了一個問題。 好吧,它不是真正的問題,它更像是我想學習的東西。 我想開始學習 .net 核心的 class 庫。 首先,我創建了一個具有正確設置的 class 庫項目。 現在我想創建例如使用的函數

應用程序用戶管理器

我不知道如何從我的其他項目訪問 applicationusermanager。 當我閱讀一些帖子時,我發現它與依賴關系有關。 再一次,我不知道它是否可能或應該如何開始。

例如,假設我有一個庫 function,如下所示:

public static async Task<ApplicationUser> Get_User_Test()
    {
        return await _usermanager.FindByEmailAsync("test@test.com");
    }

我希望這個 function 在我的主項目中運行。 我通過做library.Get_User_Test();來調用它但它失敗了。

一些好的文章或建議將不勝感激。 我只是不知道從哪里開始。

我希望你們都做得很好,身體健康。 感謝您閱讀本文,祝您有美好的一天。

親切的問候,

缺口

UserManager provides the APIs for managing user in a persistence store 當您使用 .NET 核心時,它是ASP.NET Core Identity的一個基本框架,可提供所有身份驗證/授權邏輯。 這是一個橫切的邏輯,所以你不想測試自己。 當您在此處選擇在沒有Entity Framework Core的情況下集成數據庫時,您執行單元測試的唯一事情是您的自定義IUserStore

您可以想象UserManager將調用您實現的IUserStore class 中的每個實現方法。 因為它是您的自定義代碼,所以您應該為此編寫 UT。

有一個示例代碼。

public class MongoUserStore : IUserStore<ApplicationUser>
{
    private readonly IUserRepository _userRepo;
    public MongoUserStore(IUserRepository userRepo)
    {
        _userRepo = userRepo;
    }

    public async Task<User> FindByIdAsync(string userId, CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();

            var user = await _userRepo.GetOneAsync(userId);
            if (user != null)
            {
                return user;
            }

            return null;
        }
}

然后你需要為這個 class 寫 UT

public class Test
{
    [Fact]
    public async Task Find_By_Id_Test()
    {
        // Arrange
        // Your mock here
        var mockMongoUserStore = Mock<IUserStore<ApplicationUser>>();
        // Act
        var user = await mockMongoUserStore.FindByIdAsync("abc", null);
        // Assert
        Assert.True(user != null);
    }
}

暫無
暫無

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

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