Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc Spring SimpleFormController中的Java junit测试更改区域设置_Spring Mvc_Jakarta Ee - Fatal编程技术网

Spring mvc Spring SimpleFormController中的Java junit测试更改区域设置

Spring mvc Spring SimpleFormController中的Java junit测试更改区域设置,spring-mvc,jakarta-ee,Spring Mvc,Jakarta Ee,对于SpringMVC,我有一个SimpleFormController,它有一个简单的方法,可以通过更改语言环境(i18n)来更改用户的语言 使用应用程序时,代码工作正常。但是,我想对这个方法进行Junit测试,到目前为止,我已经想到了以下几点: public class LoginPostControllerTest extends TestCase { public void testLocalize() throws Exception { MockHttpServletReq

对于SpringMVC,我有一个SimpleFormController,它有一个简单的方法,可以通过更改语言环境(i18n)来更改用户的语言

使用应用程序时,代码工作正常。但是,我想对这个方法进行Junit测试,到目前为止,我已经想到了以下几点:

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());
}
}


但它打印的是“fr_CA”而不是“zh_CN”。有人能提供更好的Junit测试策略吗?

您需要在测试中再次获得LocalResolver

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)));
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)));