2015-08-27 2 views
5

cerco di JUnit il seguente controllerCome faccio a dare parametri di richiesta per un posto utilizzando MockMvc

@RequestMapping(value="actions.htm", params="reqType=delete",method=RequestMethod.POST) 
    @ResponseBody 
    public String deletePendingAction(@RequestParam("aPk") Long aPk) 
    { 
    pendingActionsService.deletePendingAction(aPk); 
    return "Deleted"; 
    } 

Io uso params = "reqType = Elimina" e questo è credo che il motivo per cui JUnit non riesce a mappare il controller. Ho testato tutti gli altri controller e funzionano senza tag params nel controller. Il mio JUnit config è:

@RunWith(SpringJUnit4ClassRunner.class) 
@WebAppConfiguration 
@ContextConfiguration(classes = ApplicationConfig.class,loader = AnnotationConfigWebContextLoader.class) 
@TransactionConfiguration(defaultRollback = true) 
@Transactional 
public class JUnitTests { 

    @Autowired 
    private WebApplicationContext wac; 

    private MockMvc mockMvc; 

    @Before 
    public void SetupContext() 
    { 
    this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build(); 
    } 

    @Test 
    public void testController() throws Exception 
    { 
     this.mockMvc.perform(post("/actions.htm","reqType=delete").param("aPk","2")); 
    } 
} 

Come traduco questo params tag al JUnit MVC primavera? Grazie

risposta

5

aggiungi param `reqType = delete 'all'URL.

this.mockMvc.perform(post("/actions.htm?reqType=delete") 
       .param("aPk", "2")).andReturn().getResponse().getStatus()); 
+0

che in realtà ha funzionato, ma non capisco il motivo per cui this.mockMvc.perform (posta ("/ pendingactions.htm", "? ReqType = cancella") non dovrebbe essere ancora work..it aggiungerlo a l'uri .. – george