2016-04-06 7 views
0

私はAccept-Languageヘッダを設定することにより、ロケールを切り替えることができる(RestAssuredを使用して)作業統合テストを有するコントローラメソッドの引数の一つはLocaleSpring RESTドキュメントでロケールを切り替える方法は?

@RequestMapping("/{id}") 
public Survey getSurvey(@PathVariable("id") SurveyId surveyId, 
         Locale locale) { ... } 

ある@RestControllerを有します。

これでSpring RESTドキュメントを使用してこれを文書化したいと考えています。この場合のヘッダーの設定(MockMvcを使用)は機能しません。このような

私のテスト何か:

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration 
@WebAppConfiguration 
public void SurveyControllerDocumentation { 

    // Test methods here 
    ... 

    // Application context for documentation test 
    @Configuration 
    @EnableAutoConfiguration 
    public static class TestConfiguration { 
     @Bean 
     public SurveyController controller(MessageSource messageSource) { 
      return new SurveyController(userService(), messageSource, surveyService()); 
     } 

     @Bean 
     public UserService userService() { 
      return mock(UserService.class); 
     } 

     @Bean 
     public SurveyService surveyService() { 
      return mock(SurveyService.class); 
     } 

     @Bean 
     public CustomEditorsControllerAdvice customEditorsControllerAdvice() { 
      return new CustomEditorsControllerAdvice(); 
     } 

     @Bean 
     public RestResponseEntityExceptionHandler exceptionHandler() { 
      return new RestResponseEntityExceptionHandler(); 
     } 
    } 
} 

は、私は明示的にロケール注入を行い、私のテスト・コンテキストに追加する必要があるいくつかの豆はありますか?

私はあなたが要求ビルダーにlocale(Locale)メソッドを使用してLocaleを設定することができます(春4.2.5を持っている)春のブート1.3.3

答えて

2

を使用しています:

mockMvc.perform(
    get("/") 
     .accept(MediaType.APPLICATION_JSON) 
     .locale(Locale.GERMAN)) 
    .andExpect(status().isOk()) 
    .andDo(document("example")); 
+0

Thxをします。私は '.header(" Accept-Language "、" fr ")を追加して、http-request.adocがそのヘッダを表示するようにしました。これは、REST APIのユーザがロケールを設定する必要があるからです。 –

関連する問題