[英]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.