Unit testing ValidationAttribute message localizatiom
Takeshi Masukawa
1
Reputation point
I'm developing ASP.NET Core Web API project.
I tried to test a POCO like following:
public class Poco{
[Required(ErrorMessageResourceType = typeof(SharedResource), ErrorMessageResourceName = "Required")]
public string Id {get; set; }
}
I prepared resource files of some languages for "Required" message.
This perfectly works when I launch the project.
Then, I tried to test this validation message by code below but it always returns ja-JP message (My default locale is ja-JP).
[TestClass]
public class TestPoco
{
[TestMethod]
public void ErrorMessageLocalized()
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
var item = new Poco() { Id = null };
var validationResultList = new List<ValidationResult>();
Validator.TryValidateObject(item, new ValidationContext(item), validationResultList);
var message = validationResultList[0].ErrorMessage;
Assert.AreEqual("The field [ID] is required", message);
}
}
How can I test other languages?
Update:
This problem resolved by changing CurrentUICulture
instead of CurrentCulture
.
CurrentCulture
does not affect localization, it affects culture-dependent formatting and parsing.
Thank you for help.