2011-03-22 14 views
5

Kiedy zrobić testy JUnit, robię coś takiego testu wiosny MVC kontrolerów:Jak przetestować jednostkę ResponseBody lub ResponseEntity wysłaną przez kontroler Spring MVC?

request.setRequestURI("/projects/"+idProject+"/modify"); 
ModelAndView mv = handlerAdapter.handle(request, response, controller); 

gdzie testowana jest jak kontroler:

@RequestMapping(value = "{id}/modify") 
public String content(ModelMap model, @PathVariable("id") Project object) { 

Ale nie uważam, jak uzyskać ResponseBody odpowiedź programów obsługi żądań zdefiniowanych w następujący sposób:

@RequestMapping("/management/search") 
public @ResponseBody ArrayList<SearchData> search(@RequestParam("q")) { 
     .... 
       .... 
     ArrayList<SearchData> datas = ....; 

     return datas; 
    } 
+0

rozglądając się znalazłem inne rozwiązanie, które w moim przypadku działa: http://stackoverflow.com/questions/9138555/spring-framework-test-restful-web-service-controller-offline-ie-no-server- n Wydaje się bardzo łatwy w implementacji i pasuje do mojego kodu testowego. – emas

Odpowiedz

3

Test jednostki wystarczy zweryfikować zawartość wartości zwracanej przez mnie TZT:

ArrayList<SearchData> results = controller.search("value"); 
assertThat(results, ...) 

@ResponseBody adnotacji nie ma znaczenia. Jest to jedna z wielkich zalet kontrolowanych kontrolerów - twoje testy jednostek mogą skupiać się na logice biznesowej, a nie na mechanice ram. Dzięki kontrolerom poprzedzającym adnotację połowa kodu testowego jest poświęcana na konstruowanie fałszywych żądań, odpowiedzi i skojarzonych gubinków w ten sposób. To rozproszenie.

Sprawdzanie, czy adnotacje kodu są poprawnie zintegrowane z ramą, jest zadaniem integracji i/lub testów funkcjonalnych.

+0

Ponadto, dla wyniku ResponseEntity można po prostu wywołać getBody, aby uzyskać wyniki. tj. ResponseEntity results = controller.search ("value"); MyObject obj = results.getBody(); assertThat (obj, ...) – digitaljoel

+0

Mam nadzieję, że link do mojego bloga nie jest zły. W lutym napisałem wpisy bezpośrednio związane z kontrolerami testującymi. http://digitaljoel.nerd-herders.com/2011/02/05/mock-testing-spring-mvc-controller/ i http://digitaljoel.nerd-herders.com/2011/02/05/using-mockito -to-test-spring-mvc-ajax-interakcja/z drugim testowaniem metody zwracającej ResponseEntity. – digitaljoel

+0

Ok, dziękuję za odpowiedź, skaffman, masz rację, muszę tylko sprawdzić zawartość zwracanej wartości. – Nico

Powiązane problemy