namespace Util.Localization.Store.Tests; public class LocalizedManagerTest { /// /// 模拟缓存 /// private readonly Mock _mockMemoryCache; /// /// 模拟本地化资源存储器 /// private readonly Mock _mockLocalizedStore; /// /// 本地化资源管理器 /// private readonly LocalizedManager _manager; /// /// 测试初始化 /// public LocalizedManagerTest() { _mockMemoryCache = new Mock(); var mockCacheEntry = new Mock(); _mockMemoryCache.Setup( t => t.CreateEntry( It.IsAny() ) ).Returns( mockCacheEntry.Object ); _mockLocalizedStore = new Mock(); _mockLocalizedStore.Setup( t => t.GetTypes() ).Returns( new List() ); var mockOptions = new Mock>(); _manager = new LocalizedManager( _mockLocalizedStore.Object, _mockMemoryCache.Object, mockOptions.Object ); CultureInfo.CurrentUICulture = new CultureInfo( "zh-CN" ); } /// /// 测试加载全部资源 /// [Fact] public void TestLoadAllResources_1() { //设置返回资源 var resources = new Dictionary { { "name", "名称" } }; _mockLocalizedStore.Setup( t => t.GetResources( "zh-CN", null ) ).Returns( resources ); //执行 _manager.LoadAllResources(); //验证 _mockMemoryCache.Verify( t => t.CreateEntry( "zh-CN--name" ) ); } /// /// 测试加载全部资源 - 本地化配置设置区域文化 - 多个区域文化 /// [Fact] public void TestLoadAllResources_2() { //设置区域文化 _mockLocalizedStore.Setup( t => t.GetCultures() ).Returns( new []{ "en-US" } ); //设置返回资源 var resources = new Dictionary { { "name", "名称" } }; _mockLocalizedStore.Setup( t => t.GetResources( "zh-CN", null ) ).Returns( resources ); var resources2 = new Dictionary { { "name", "Name2" } }; _mockLocalizedStore.Setup( t => t.GetResources( "en-US", null ) ).Returns( resources2 ); //执行 _manager.LoadAllResources(); //验证 _mockMemoryCache.Verify( t => t.CreateEntry( "zh-CN--name" ) ); _mockMemoryCache.Verify( t => t.CreateEntry( "en-US--name" ) ); } /// /// 测试加载全部资源 - 1个资源类型 /// [Fact] public void TestLoadAllResources_3() { //设置区域文化 _mockLocalizedStore.Setup( t => t.GetCultures() ).Returns( new[] { "en-US" } ); //设置资源类型 _mockLocalizedStore.Setup( t => t.GetTypes() ).Returns( new List { "type1" } ); //设置返回资源 var resources = new Dictionary { { "name", "名称" } }; _mockLocalizedStore.Setup( t => t.GetResources( "zh-CN", "type1" ) ).Returns( resources ); var resources2 = new Dictionary { { "name", "Name2" } }; _mockLocalizedStore.Setup( t => t.GetResources( "en-US", "type1" ) ).Returns( resources2 ); //执行 _manager.LoadAllResources(); //验证 _mockMemoryCache.Verify( t => t.CreateEntry( "zh-CN-type1-name" ) ); _mockMemoryCache.Verify( t => t.CreateEntry( "en-US-type1-name" ) ); } /// /// 测试加载全部资源 - 2个资源类型 /// [Fact] public void TestLoadAllResources_4() { //设置区域文化 _mockLocalizedStore.Setup( t => t.GetCultures() ).Returns( new[] { "en-US" } ); //设置资源类型 _mockLocalizedStore.Setup( t => t.GetTypes() ).Returns( new List { "type1", "type2" } ); //设置返回资源 var resources = new Dictionary { { "name", "名称" } }; _mockLocalizedStore.Setup( t => t.GetResources( "zh-CN", "type1" ) ).Returns( resources ); var resources2 = new Dictionary { { "name", "名称2" } }; _mockLocalizedStore.Setup( t => t.GetResources( "zh-CN", "type2" ) ).Returns( resources2 ); var resources3 = new Dictionary { { "name", "Name3" } }; _mockLocalizedStore.Setup( t => t.GetResources( "en-US", "type1" ) ).Returns( resources3 ); var resources4 = new Dictionary { { "name", "Name4" } }; _mockLocalizedStore.Setup( t => t.GetResources( "en-US", "type2" ) ).Returns( resources4 ); //执行 _manager.LoadAllResources(); //验证 _mockMemoryCache.Verify( t => t.CreateEntry( "zh-CN-type1-name" ) ); _mockMemoryCache.Verify( t => t.CreateEntry( "zh-CN-type2-name" ) ); _mockMemoryCache.Verify( t => t.CreateEntry( "en-US-type1-name" ) ); _mockMemoryCache.Verify( t => t.CreateEntry( "en-US-type2-name" ) ); } }