2011-06-29 17 views
5

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?

cevap

2

Eğer test tekrar localeResolver elde ihtiyacım

LocaleResolver resolver = RequestContextUtils.getLocaleResolver(mockRequest); 
System.out.println(mockRequest.getLocale().toString()); 
System.out.println(resolver.resolveLocale(mockRequest).toString()); 
assertTrue(!mockRequest.getLocale().equals(resolver.resolveLocale(mockRequest)));