Napisałem aplikację internetową za pomocą sprężyny mvc 3. Zapewnia pojedynczy punkt końcowy, który zwraca JSON. Udało mi się go pomyślnie uruchomić przy użyciu parametrów url, ale teraz muszę to zmienić, aby zamiast tego używać zmiennych ścieżek.Wiosenny test MVC - Wstrzykiwanie symulowanego repozytorium, gdy test integracji wymaga określonego typu.
zmieniłem kontroler
od:
@Controller
public class DataController {
@Autowired
private IDataService dateService;
@RequestMapping(
value = "/some/data",
method = RequestMethod.GET,
produces = "application/json"
)
public @ResponseBody Data getDataByCode(@RequestParam String code) {
return versionService.getDataByCode(code);
}
}
do:
@Controller
public class DataController {
@Autowired
private IDataService dateService;
@RequestMapping(
value = "/some/data/{code}",
method = RequestMethod.GET,
produces = "application/json"
)
public @ResponseBody Data getDataByCode(@PathVariable String code) {
return versionService.getDataByCode(code);
}
}
i mojego XML Web mapowanie url ...
od:
<servlet>
<servlet-name>dataBycode</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/config/servlet-config.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dataBycode</servlet-name>
<url-pattern>/some/data</url-pattern>
</servlet-mapping>
do:
<servlet>
<servlet-name>dataBycode</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/config/servlet-config.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dataBycode</servlet-name>
<url-pattern>/some/data/*</url-pattern>
</servlet-mapping>
Ale ja dostaję 404 dla żądania http: http://localhost/some/data/1234
Jeżeli wiem, że 1234 nie istnieje.
Na dodatek żądanie nigdy nie przechodzi do metody kontrolera, więc musi to być konfiguracja wzorca URL strony internetowej.
W ramach testu próbowałem zmienić wzór adresu URL tak, aby dokładnie odpowiadał żądaniu z kodem i zwróciło JSON zgodnie z oczekiwaniami, więc znam jego wzór adresu URL. Po prostu nie wiem jak to naprawić.
Próbowałem:
- /
- /*
- /some/data *
- /some/data/*
Jak konfiguruje się wiosna? – fabballe
Czy jest ona załadowana przez konfigurację XML, co może mieć wpływ na działanie aplikacji z dowolnymi zmiennymi ścieżki? Jeśli tak, to dodam ten szczegół do pytania. Zapamiętaj funkcje aplikacji zgodnie z oczekiwaniami, jeśli nie używam zmiennej ścieżki. Na przykład działa poprawnie z parametrem ścieżki jako wartością '' 'code'''. – Jeremy
Rzeczywiście konfiguracja sprężyny nie powinna stanowić problemu. Dodaję odpowiedź z kilkoma wskazówkami. – fabballe