2016-03-16 2 views
0

J'utilise MockHttpServletRequestBuilder pour créer ma demande de test de mon infrastructure. L'un des paramètres de requête que j'ai est un tableau de chaînes. Pour mes tests je veux tester en passant un tableau vide dans ma requête. Cependant, l'assertion dans MockHttpServletRequestBuilder.addToMultiValueMap ne me laisse pas passer des valeurs nulles ou vides.Passer un paramètre de tableau vide à la méthode de param MockHttpServletRequestBuilder

Ceci est le corps d'erreur que je reçois:

java.lang.IllegalArgumentException: 'values' must not be empty 
at org.springframework.util.Assert.notEmpty(Assert.java:214) 
at org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder.addToMultiValueMap(MockHttpServletRequestBuilder.java:698) 
at org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder.param(MockHttpServletRequestBuilder.java:153) 
at MyMockApiRequests.queryPath(MockJdbcApiRequests.java:105) 

est-il un autre moyen de tester cette condition?

+0

Vous devez probablement simplement pour éviter de passer le paramètre si le tableau est vide, alors il devrait être aucun paramètre avec ce nom dans la chaîne de requête. –

Répondre

1

Je pense que le réglage de votre valeur à une chaîne vide fonctionne.

Mon contrôleur

@RequestMapping(value = "/admin/config", method = RequestMethod.GET) 
public List<TdConfig> getTdConfigs(@RequestParam(required = false) List<String> names) { 
    return tdAdminService.getTdConfigs(names); 
} 

Mon Mockito

MultiValueMap<String, String> params = new LinkedMultiValueMap<>(); 
    params.add("names", ""); 
    MockHttpServletRequestBuilder request = get("/admin/config") 
      .params(params) 
      .accept(MediaType.APPLICATION_JSON); 

    mockMvc.perform(request) 
      .andExpect(MockMvcResultMatchers.status().isOk()) 
      .andDo(print()); 

Impression de la demande:

MockHttpServletRequest: 
     HTTP Method = GET 
     Request URI = /admin/config 
     Parameters = {names=[]} 
      Headers = {Accept=[application/json]}