2016-09-05 4 views
1

Übersicht bei der Prüfung:Leerer Inhalt Körper Ausnahme Szenarien mit mockmvc

Ich werde schlecht Anfrage prüfen (400) mit einer angepassten Fehlermeldung in Spring MVC-Test. Der Test erhält 400 als Status; Der Inhaltshauptteil ist jedoch leer.

Die Code-Schnipsel sind wie folgt:

@Before 
    public void setup() { 
     MockitoAnnotations.initMocks(this); 
     memberServiceController.setMemberDetailsApiController(mockMemberDetailsApiController); 
     memberServiceController.setResourceMessage(mockResourceMessage); 

     mockMvc = MockMvcBuilders.webAppContextSetup(context) 
       .addFilter(new ShallowEtagHeaderFilter()) 
       .apply(documentationConfiguration(restDocumentation)) 
       .build(); 
    } 

@Test 
    public void getMemberDetails_whenStoreIdIsNull_setStatusToBadRequest() throws Exception { 
     Mockito.doReturn("storeId is empty").when(mockResourceMessage).getMessage(MEMBER_ERROR_INVALID_STOREID); 

     mockMvc.perform(get(URL) 
       .header(REQUEST_HEADER_COOKIE, DEFAULT_COOKIE_VALUE) 
       .param(REQUEST_PARAM_MEMBERSHIP_IDENTIFIER, "MEMBER1")) 
       .andDo(MockMvcResultHandlers.print()) 
       .andDo(document("memberServices/GetMemberDetailsNullStoreId", 
         requestHeaders(
           headerWithName(REQUEST_HEADER_COOKIE).description(REQUEST_HEADER_COOKIE_DESCRIPTION) 
         ), 
         requestParameters(
           parameterWithName(REQUEST_PARAM_MEMBERSHIP_IDENTIFIER).description(REQUEST_PARAM_MEMBERSHIP_IDENTIFIER_DESCRIPTION) 
         ))) 
       .andExpect(status().isBadRequest()) 
       .andExpect(content().string(containsString("storeId is empty".toLowerCase()))) 
       .andReturn().getResponse(); 
    } 

Die angehobene Ausnahme wie folgt ist:

MockHttpServletRequest: 
     HTTP Method = GET 
     Request URI = /retailer1/memberDetails 
     Parameters = {membershipIdentifier=[MEMBER1]} 
      Headers = {Cookie=[SESSION=67421bc3-36da-4b64-9aca-94edf57211f6]} 

Handler: 
      Type = com.blss.retailServices.memberServices.restServices.MemberRestController 
      Method = public org.springframework.http.HttpEntity<org.springframework.hateoas.Resource<com.blss.retailServices.memberServices.models.MemberDetailsResponseModel>> com.blss.retailServices.memberServices.restServices.MemberRestController.getMemberDetails(com.blss.retailServices.memberServices.models.MemberModel) 

Async: 
    Async started = false 
    Async result = null 

Resolved Exception: 
      Type = com.blss.retailServices.InvalidRequestException 

ModelAndView: 
     View name = null 
      View = null 
      Model = null 

FlashMap: 
     Attributes = null 

MockHttpServletResponse: 
      Status = 400 
    Error message = null 
      Headers = {} 
    Content type = null 
      Body = 
    Forwarded URL = null 
    Redirected URL = null 
      Cookies = [] 

java.lang.AssertionError: Response content 
Expected: a string containing "storeid is empty" 
    but: was "" 

Die erzeugte Antwort in API Doc mit asciidoc ist wie folgt:

HTTP/1.1 400 Bad Request 

Frage:

Jetzt würde ich es schätzen, wenn jemand mir helfen kann, eine falsche Anfrage mit meiner angepassten Ausnahmebedrohung zu erhalten ("storeId ist leer"), um zur generierten API-Dokumentation hinzugefügt zu werden und etwas wie unten als generierte Antwort zu haben API-Dokumentation:

HTTP/1.1 400 Bad Request, 
storeId is empty 
+1

Haben Sie dies überprüft? http://stackoverflow.com/questions/28324994/empty-exception-body-in-spring-mvc-test – abaghel

+0

Danke, ich könnte es nach Überprüfung dieses Links lösen. Das Problem war ein Duo-zu-Ausnahme-Handling – saeedj

Antwort

0

Das Problem wurde im Zusammenhang mit der Ausnahmebehandlung in meinem Code verwandt. Ich habe vergessen, die GlobalControllerExceptionHandler-Klasse hinzuzufügen, die unser Ausnahmehandler für @SpringApplicationConfiguration in meiner Testklasse ist. Also nach dem Hinzufügen wie folgt mein Problem gelöst:

@SpringApplicationConfiguration(classes = { 
     MemberRestControllerTest.class, 
     MemberRestController.class, 
     ResourceResultProcessor.class, 
     GlobalControllerExceptionHandler.class 
}) 
public class MemberRestControllerTest { 
     ... 
} 
Verwandte Themen