2016-08-11 11 views
0

Spring Bootアプリケーション用のJUnitテストを書いたことはありません。私のサービス(localhost)は、RestTemplateを介してサービスを呼び出し、それは私に応答を送信します。誰か、私のクラス構造で私に小さな例を教えてもらえますか?それとも誰かが私の場合の良い文書を知っていますか?RestTemplate用のSpringブートでJUnitテストを書く方法

UIController:

@RequestMapping("/my-service") 
public interface MyUIController { 

    @RequestMapping(method=RequestMethod.GET, value= "/user", produces="application/json") 
    public List<User> getUser(HttpServletRequest request, HttpServletResponse response); 
} 

RestController:

@RestController 
public class MyUIRestController implements MyUIController { 

    @Autowired 
    private MyUIService myUIService; 

    public List<User> getUser(HttpServletRequest request, HttpServletResponse response) { 
     try { 
      return myUIService.getUser(request, response); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     return null; 
    } 
} 

MyUIService:

@Service 
public class MyUIService { 
    public List<User> getUser(HttpServletRequest request, HttpServletResponse response) throws IOException { 

     String url = this.webServiceProperties.webUserBaseURL+"searchUser"; 

     MultiValueMap<String, String> params = new LinkedMultiValueMap<String, String>(); 
     params.add("firstName", request.getParameter("firstName")); 

     UriComponents uriComponents = UriComponentsBuilder.fromHttpUrl(url).queryParams(params).build().encode(); 

     HttpHeaders requestHeaders = new HttpHeaders(); 
     requestHeaders.setAccept(Collections.singletonList(new MediaType("application","json"))); 
     HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders); 

     RestTemplate restTemplate = new RestTemplate(); 
     restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); 

     ResponseEntity<List<User>> responseEntity = restTemplate.exchange(
       uriComponents.toUri(), 
       HttpMethod.GET, requestEntity, 
       new ParameterizedTypeReference<List<User>>() {}); 

     return responseEntity.getBody(); 

    } 
} 

私は、サービスまたはRestControllerをテストするために、正確には何がありますか?ご覧のとおり、私は別のサービスを呼びます。私はモックを作る必要がありますか、私は今すぐ呼びかけているサービスからコントローラ/サービスを直接テストできますか?

ありがとうございます!

答えて

2

getUser()メソッドをMyUIRestControllerのエンドポイントとして公開して、RestControllerをテストすることをお勧めします。

Spring MVCテストフレームワークを使用してコントローラをテストできます。 "春の休憩Controllerテスト" のためのシンプルなGoogle検索には、以下のリンクに私をリダイレクト:

http://docs.spring.io/spring-security/site/docs/current/reference/html/test-mockmvc.html

https://www.petrikainulainen.net/programming/spring-framework/unit-testing-of-spring-mvc-controllers-rest-api/

http://blog.zenika.com/2013/01/15/spring-mvc-test-framework/

はまた、あなたは以下の春のドキュメントを参照することができます

関連する問題