일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 접근지시자
- docker
- raw 타입
- System.out
- yield
- System.err
- 제네릭 와일드 카드
- 합병 정렬
- Switch Expressions
- 바운디드 타입
- annotation processor
- 자바스터디
- junit 5
- 익명 클래스
- 상속
- 브릿지 메소드
- 항해99
- 스파르타코딩클럽
- 로컬 클래스
- 정렬
- 람다식
- github api
- 자바할래
- 프리미티브 타입
- auto.create.topics.enable
- 함수형 인터페이스
- Study Halle
- throwable
- System.in
- 제네릭 타입
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