์• ์ •์ฝ”๋”ฉ ๐Ÿ’ป

ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ ๋ฐ˜ํ™˜๊ฐ’ ์—†๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•ด์•ผํ•  ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ฒผ๋‹ค.

์ด ๋ฉ”์„œ๋“œ๋Š” 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

๋ฐ˜์‘ํ˜•