🐜 TESTING

λ°˜ν™˜κ°’μ΄ μ—†λŠ” μ„œλΉ„μŠ€ ν…ŒμŠ€νŠΈν•˜κΈ°

μ• μ •μ“° 2023. 6. 28. 16:27

ν…ŒμŠ€νŠΈμ½”λ“œλ₯Ό μž‘μ„±ν•˜λ©΄μ„œ λ°˜ν™˜κ°’ μ—†λŠ” λ©”μ„œλ“œλ₯Ό ν…ŒμŠ€νŠΈν•΄μ•Όν•  κ²½μš°κ°€ 생겼닀.

이 λ©”μ„œλ“œλŠ” Messageλ₯Ό λ³΄λ‚΄λŠ” κΈ°λŠ₯을 ν•˜λŠ” λ©”μ„œλ“œμ΄κΈ° λ•Œλ¬Έμ— λ‚΄λΆ€μ—μ„œ 메세지λ₯Ό 보내고, 둜그 μ €μž₯ ν›„ λ°˜ν™˜ν•˜λŠ” 값이 μ—†λ‹€.

λ‚˜λŠ” 이 λ‚΄λΆ€μ—μ„œ 데이터 μ •μ œκ°€ λλ‚œ ν›„ λ§ˆμ§€λ§‰μ—  private send(RequestDto request)  에 μ „λ‹¬λ˜λŠ” RequestDto λ₯Ό μ•Œκ³  μ‹Άμ—ˆλ‹€.

 

private sendMessageList(){
	// 데이터 μ •μ œ
    send(reqeust);
}

private send(RequestDto request){
	// μ‹€μ œλ‘œ 전솑
}

 

μ΄λ•Œ, ArgumentCaptor λ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€.

 @Test
 void sendMessageTest() {
    sendService.sendMessageList(new OtherRequest(anyLog()));
    // λͺ¨μ˜ 객체에 μ „λ‹¬λœ νŠΉμ • 객체λ₯Ό 얻을 수 μžˆλ„λ‘ ν•΄μ€€λ‹€.
    ArgumentCaptor<RequestDto> captor = ArgumentCaptor.forClass(RequestDto.class);
    // sender λΌλŠ” λͺ¨μ˜ 객체가 send() λ©”μ„œλ“œλ₯Ό λΆˆλ €μ„ λ•Œμ˜ 인수λ₯Ό ν¬νšν•œλ‹€
    verify(sender).send(captor.capture());
    RequestDto reqeust = captor.getValue();
    
    // 포획된 객체와 λ‚΄κ°€ κΈ°λŒ€ν•˜κ³  μžˆλŠ” μ •μ œλœ 데이터와 μΌμΉ˜ν•˜λŠ”μ§€ ν™•μΈν•œλ‹€.
    // μ£Όμ†Œκ°’μ΄ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— usingRecursiveComparison λ₯Ό μ‚¬μš©ν•˜μ—¬ 속성이 κ°™μ€μ§€λ§Œ ν™•μΈν•œλ‹€.
    assertThat(request).usingRecursiveComparison().isEqualTo(
    	new ReqweustDto("λ‚΄κ°€ κΈ°λŒ€ν•˜κ³  μžˆλŠ” μ •μ œλœ 데이터"));
 }

verify λŠ” ν•΄λ‹Ή λ©”μ„œλ“œκ°€ λ­”ν™œλ™μ„ ν•˜λŠ”μ§€ κΈ°λ‘ν•˜κ³  μžˆλ‹€. μ—¬κΈ°μ„œ RequestDto λ₯Ό ArgumentCaptor 둜 감싼 객체λ₯Ό νŒŒλΌλ―Έν„°μ— λ„£μ–΄μ£Όλ©΄ RequestDto ν΄λž˜μŠ€μ— λŒ€ν•œ ν™œλ™μ„ μΆ”μ ν•œλ‹€. 

 

κΏ€νŒμžˆλ‹€

usingRecursiveComparison λ₯Ό μ‚¬μš©ν•˜λ©΄ equals λ₯Ό μž¬μ •μ˜ν•˜μ§€ μ•Šμ•„λ„ 되기 λ•Œλ¬Έμ— μ†μ„±λ§Œ λΉ„κ΅ν•˜κΈ° λ”± μ’‹λ‹€ κ°œκΏ€ assert

λ°˜μ‘ν˜•