일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 합병 정렬
- Switch Expressions
- 접근지시자
- raw 타입
- yield
- junit 5
- 람다식
- Study Halle
- 자바할래
- 항해99
- 스파르타코딩클럽
- github api
- auto.create.topics.enable
- 제네릭 와일드 카드
- 자바스터디
- 익명 클래스
- 함수형 인터페이스
- 상속
- throwable
- annotation processor
- 정렬
- 로컬 클래스
- 브릿지 메소드
- System.in
- System.err
- docker
- 프리미티브 타입
- 바운디드 타입
- System.out
- 제네릭 타입
Archives
- Today
- Total
코딩하는 털보
21.11.04 TIL 본문
오늘의 삽질
Junit RestTemplate 테스트
매번 RestTemplate를 new RestTemplate로 생성해서 사용하면 테스트할때 막막했다.
그래서 먼저 카카오, 구글, 네이버에 요청하는 RestTemplate을 RestTemplateBuilder 빈에서 생성하도록 변경했다.
private final RestTemplate restTemplate;
@Autowired
public KakaoSocialLoginUtil(RestTemplateBuilder restTemplateBuilder) {
this.restTemplate = restTemplateBuilder.build();
}
이 방법도 있고 아니면 RestTemplate 자체를 빈으로 등록하는 방법도 있는데
RestTemplate을 사용하는 유틸 자체가 빈이니까 차이 없지 않을까 해서 이렇게 했다.
@RestClientTest
RestTemplateBuilder로 구축된 서비스 테스트는 @RestClientTest 어노테이션을 사용했다.
참고 : https://www.baeldung.com/restclienttest-in-spring-boot
@ExtendWith(MockitoExtension.class)
@RestClientTest(GoogleSocialLoginUtil.class)
class GoogleSocialLoginUtilTest {
MockRestServiceServer를 테스트에 주입하면 서버의 예상 응답을 코딩할 수 있다.
@Autowired
private MockRestServiceServer server;
@Autowired
private ObjectMapper objectMapper;
@Autowired
private GoogleSocialLoginUtil googleSocialLoginUtil;
String authCode;
Map<String, Object> attributes;
@BeforeEach
public void setUp() throws Exception {
authCode = "abcdefg1234567";
attributes = new HashMap<>();
attributes.put("sub", "123456789");
attributes.put("name", "tester");
attributes.put("email", "tester.test.com");
String detailsString =
objectMapper.writeValueAsString(attributes);
this.server.expect(requestTo(GoogleSocialLoginUtil.GOOGLE_TOKEN_INFO_URL
+"?id_token="+authCode))
.andRespond(withSuccess(detailsString, MediaType.APPLICATION_JSON));
}
@Test
void getUserInfoByCode() {
//given
//when
Oauth2UserInfo userInfo = googleSocialLoginUtil.getUserInfoByCode(authCode);
//then
assertThat(userInfo.getId()).isEqualTo(attributes.get("sub")+"G");
assertThat(userInfo.getName()).isEqualTo(attributes.get("name"));
assertThat(userInfo.getEmail()).isEqualTo(attributes.get("email"));
}
}
Comments