在Tests项目中设置CultureInfo?

时间:2010-01-29 22:41:26

标签: asp.net asp.net-mvc unit-testing globalization cultureinfo

我有一个MVC应用程序,我已经在web.config中设置了全球化。一切都很好的在网络应用程序。但在我的测试项目中,我的服务层出现问题。我要用以下格式dd / MM / yyyy询问出生日期。我将此作为字符串传递给我的服务层。我有一个RegEx检查它是否格式正确,但是当它是,我试图将它转换为一个日期,我收到一个错误。这是因为CultureInfo设置为en.US,我希望它是en.GB.我尝试过我的一个初始化测试方法来执行以下操作,但无济于事:

string sCulture = ConfigurationSettings.AppSettings["CultureToUse"];  //returns "en.GB"
        System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(sCulture);
        CultureInfo.CreateSpecificCulture(sCulture);

如何在我的测试项目中设置CultureInfo?

2 个答案:

答案 0 :(得分:1)

ConfigurationSettings.AppSettings["CultureToUse"]

必须返回“en-GB”而非“en.GB”,希望这有帮助!

答案 1 :(得分:1)

由于您强制执行数据所在的格式并且它只是数字,因此您不应该依赖于用户定义的设置,最好使用DateTime.ParseExact(dateString,“dd / MM / yyyy”,CultureInfo)。 InvariantCulture的)。

CurrentUICulture属性控制为应用加载的资源。 CurrentCulture是您想要设置/控制解析/格式化的。