Bir SpringMVC için basit bir yöntemle SimpleFormController'ım var; bu, yerel ayarları değiştirerek kullanıcı için dili değiştiren basit bir yöntemle (i18n).Java junit test değişikliği Spring'teki yerel ayar SimpleFormController
//localization
public void localize(HttpServletRequest request, HttpServletResponse response, String language) throws Exception {
LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);
if (localeResolver != null) {
LocaleEditor localeEditor = new LocaleEditor();
localeEditor.setAsText(language);
// set the new locale
localeResolver.setLocale(request, response,
(Locale) localeEditor.getValue());
}
}
Ve uygulamayı kullanırken çalışıyor kodu. Ancak bu yöntem için JUnit testi yapmak istiyorum ve şu ana kadar ile geldi budur:
public class LoginPostControllerTest extends TestCase {
public void testLocalize() throws Exception {
MockHttpServletRequest mockRequest = new MockHttpServletRequest();
MockHttpServletResponse mockResponse = new MockHttpServletResponse();
Locale frenchLocale = Locale.CANADA_FRENCH;
mockRequest.addPreferredLocale(frenchLocale);
SessionLocaleResolver localeResolver = new SessionLocaleResolver();
mockRequest.setAttribute(DispatcherServlet.LOCALE_RESOLVER_ATTRIBUTE, localeResolver);
String language = "zh_CN";
LoginPostController loginPostControllerTest = new LoginPostController();
loginPostControllerTest.localize(mockRequest, mockResponse, language);
System.out.println(mockRequest.getLocale().toString());
}
}
ama "fr_CA" değil "zh_CN" yazdırır. Birisi bunun için daha iyi bir Junit test stratejisi sağlayabilir mi?