Mamy jakiś kontroler, powiedzieć coś takiego:Wiosenny test integracji MVC - sposób wyszukiwania Zapytanie Ścieżka odwzorowania?
@Controller
@RequestMapping("/api")
public Controller UserController {
@RequestMapping("https://stackoverflow.com/users/{userId}")
public User getUser(@PathVariable String userId){
//bla
}
}
Mamy test integracyjny dla tego powiedzieć:
@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);
}
}
Jak możemy uniknąć twarde kodowania „/ api/Users/{ userId} "w teście? Jak możemy wyszukać żądanie mapowania według nazwy. Powyższe mapowanie żądań powinno mieć domyślną nazwę UC# getUser
Jedyne, co widziałem, to coś takiego jak MvcUriComponentsBuilder, które wydaje się wymagać użycia w kontekście żądania (aby mogło być używane w .jsps do generowania adresów URL do kontrolerów).
Jaki jest najlepszy sposób na radzenie sobie z tym? Czy muszę ujawniać mapowania jako ciągi statyczne na kontrolerach? Wolałbym przynajmniej tego uniknąć.
Jeśli nie chcesz korzystać z mapowania, można użyć klasę i nazwę metody i refleksji, aby zbadać adnotacji i wyodrębnić mapowanie. – DavidA