2016-11-20 2 views
0

Ich muss das testen;Wie übergebe ich die Parameter im feder-mvc-test?

/** Displays the balance us page. */ 
@RequestMapping(value = "/profile/balance") 
public ModelAndView balance(Principal principal) { 
    ModelAndView model = new ModelAndView("balance"); 
    String username = principal.getName(); 
    User user = userService.findUserByUsername(username); 

    model.addObject("moneyEarned", user.getMoneyEarned()); 
    model.addObject("moneySpent", user.getMoneySpent()); 

    return model; 
} 

mein Test sieht so aus;

@Test 
public void getProfileBalance() throws Exception { 
    this.mockMvc.perform(get("/profile/balance") 
      .andExpect(status().isOk()) 
      .andExpect(view().name("balance")); 
} 

Ich verstehe wirklich nicht, wie ich diese Principal-Instanz übergeben könnte. Wie kann ich das tun?

Antwort

0

Der einfachste Weg ist durch

@Test 
public void getProfileBalance() throws Exception { 
    SecurityContext ctx = new SecurityContextImpl(); 
    ctx.setAuthentication(new UsernamePasswordAuthenticationToken("principal", "password")); 
    SecurityContextHolder.setStrategyName(SecurityContextHolder.MODE_GLOBAL); 
    SecurityContextHolder.setContext(ctx); 
    this.mockMvc.perform(get("/profile/balance") 
      .andExpect(status().isOk()) 
      .andExpect(view().name("balance")); 
    SecurityContextHolder.clearContext(); 
} 

tun Oder Sie verwenden die Spring Security Test library

+0

Dieser Code nicht im Geringsten funktioniert – Mattia

Verwandte Themen