Abbiamo alcuni controllore, dire qualcosa del genere:Test di integrazione MVC primaverile - come cercare richiesta Percorso di mappatura?
@Controller
@RequestMapping("/api")
public Controller UserController {
@RequestMapping("https://stackoverflow.com/users/{userId}")
public User getUser(@PathVariable String userId){
//bla
}
}
Abbiamo un test di integrazione per questo, dicono:
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@SpringApplicationConfiguration(classes= MyApp.class)
@IntegrationTest("server:port:0")
public class UserControllerIT {
@Autowired
private WebApplicationContext context;
@Test
public void getUser(){
test().when()
.get("/api/users/{userId}", "123")
.then()
.statusCode(200);
}
}
come possiamo evitare duro codifica le "/ API/utenti/{ userId} "nel test? Come possiamo cercare la requestmapping per nome. La mappatura richiesta sopra deve avere un nome predefinito di UC# getUser
L'unica cosa che ho visto è qualcosa come MvcUriComponentsBuilder, che sembra richiedere che sia usato nel contesto di una richiesta (quindi sarebbe usato in .jsps per generare URL per i controller).
Qual è il modo migliore per gestire questo? Devo esporre i mapping come stringhe statiche sui controller? Preferirei almeno evitarlo.
Se non si desidera utilizzare la mappatura, è possibile utilizzare la classe e il nome del metodo e la riflessione per esaminare l'annotazione ed estrarre la mappatura. – DavidA