본문 바로가기

TDD, TestCode

Mock 과 Stub 의 차이는?

미드건, 영화건, 미제 컨텐츠를 접해본 사람들은 이거 많이 들어봤을거다.

Mocking me 라는건 나 놀리냐는 뜻이고, 좀 더 자세히 들어가보면 이 대화이다.

 

A : 아 야 나 건들지마 기분 안좋아

B : (살짝 치며) 어쩌라구 응 나도 기분 안좋아~

A : 아 하지마

B : 해지뭬 해지뭴랴규~

 

놀리는 사람을 따라하면서 놀리는... 그게 Mocking me 의 참 뜻이다.

테스트 코드에서의 Mocking이라는거는, DB나 API Response등을 검증할때, 

자꾸 DB접근이나 트래픽을 발생시키기 보다는, 모조품을 만든다고 생각하면 된다.

 

반면 Stub이라는 방식도 있는데, 이 뜻은 나무 그루터기다.

미리 준비된 답변을 하드코딩으로 넣은다음, 테스트를 돌리는 방식이다.

 

그럼 Mock과 Stub의 차이는 뭐냐,

 

Stub는 상태 검증이라고 생각하면 된다. 특정 로직의 수행 결과가 일치하는지?

몇번 호출되었는지 등등...

 

Mock의 경우 행위를 검증한다. 리턴값이 아닌 특정한 함수가 호출되었는지, DB나 HTTP쪽으로 접근하여 

리소스를 사용했는지 등등...

 

테스트의 종류를 거의 한 5개로 나누어서 분류하는 쪽도 있긴 한것 같은데, 

크게는 이 두가지 줄기만 알고 가면 된다.