我使用了Asp.Net Core MVC,我使用resx
文件进行本地化。
配置如下:
services.AddMvc()
.AddViewLocalization(
LanguageViewLocationExpanderFormat.Suffix,
opts => { opts.ResourcesPath = "Resources"; })
.AddDataAnnotationsLocalization();
services.Configure<RequestLocalizationOptions>(
opts =>
{
var supportedCultures = new[]
{
new CultureInfo("en-US"),
new CultureInfo("en")
};
opts.DefaultRequestCulture = new RequestCulture("en");
// Formatting numbers, dates, etc.
opts.SupportedCultures = supportedCultures;
// UI strings that we have localized.
opts.SupportedUICultures = supportedCultures;
});
我有两个解决方案的项目:
- Application.Web
- Application.Tests
我试图创建一些集成测试,例如尝试访问主页并声明是否存在这样的文本:
[Fact]
public async Task ReturnInitialHomePage()
{
//Get claims for admin
_client.SetAdminClaimsViaHeaders();
// Act
var response = await _client.GetAsync("/home/index");
// Assert
response.EnsureSuccessStatusCode();
var responseString = await response.Content.ReadAsStringAsync();
// How here load the resx file with title?
responseString.Contains("Home Page Title").Should().BeTrue();
}
我的问题是 - 如何将我的resx文件共享到项目Application.Tests:
Application.Web\Resources\Views\Home\Index.en.resx
responseString.Contains("Home Page Title").Should().BeTrue(); - How can I read the key from resx file?
我已经尝试过使用--Application.Web.Resources.View.Home.Index但这些路径不存在。
另一个问题是 - 是否有可能在那里配置将用于测试的语言?我认为默认英语是可以的,但是对于另一种类型的测试。