본문 바로가기

TDD, TestCode

(3)
Mock 과 Stub 의 차이는? 미드건, 영화건, 미제 컨텐츠를 접해본 사람들은 이거 많이 들어봤을거다. Mocking me 라는건 나 놀리냐는 뜻이고, 좀 더 자세히 들어가보면 이 대화이다. A : 아 야 나 건들지마 기분 안좋아 B : (살짝 치며) 어쩌라구 응 나도 기분 안좋아~ A : 아 하지마 B : 해지뭬 해지뭴랴규~ 놀리는 사람을 따라하면서 놀리는... 그게 Mocking me 의 참 뜻이다. 테스트 코드에서의 Mocking이라는거는, DB나 API Response등을 검증할때, 자꾸 DB접근이나 트래픽을 발생시키기 보다는, 모조품을 만든다고 생각하면 된다. 반면 Stub이라는 방식도 있는데, 이 뜻은 나무 그루터기다. 미리 준비된 답변을 하드코딩으로 넣은다음, 테스트를 돌리는 방식이다. 그럼 Mock과 Stub의 차이는 ..
단위테스트 AAA 패턴, FIRST, Right - BICEP, CORRECT AAA 패턴 이는 테스트코드 작성시 다른사람도 이해할수 있게, 규격화되고 가독성을 향상시키는 패턴이다. AAA 대신 Given - When - Then으로 부르기도 했지만 지금은 AAA 패턴이라고 하는게 유행(?)인듯 싶다. Arrange(준비) : 테스트를 실행하기 전에 필요한 것들을 준비합니다. 예를 들어, 객체를 생성하거나, Mock 객체를 만들거나, 테스트 전에 호출되어야 할 API들을 호출하는 것들을 의미합니다 Act(실행): 테스트 코드를 실행합니다. Assert(단언) : 실행한 코드가 예상한대로 동작했는지 확인합니다. 과거에는 테스트 코드에 주석을 달았으나, 최근에는 해당 패턴을 지킨다면 굳이 달지 않아도 된다고 한다. 하지만 크고 복잡한 테스트의 경우는 주석이나, 하나의 테스트를 작게 만..
테스트코드 그거 좋다는데 언제 해야되나요? 개인적 경험 최근 구인공고를 보면, 테스트코드 관련해서 우대사항에 집어넣는 회사들이 대다수더라. (사실상 필수) 그래서 그런지 내가 수료한 내일배움캠프에서도 과정에 포함되어 있었다. 다만 좀 내용이 어렵기때문에 나를 비롯한 다른 팀원들도 약간 당황하기는 했다. Mocking이니, 의존성이니 하는 용어가 갑자기 튀어나오니... 확실히 Nest.js는 편하다. 알아서 테스트(Jest)에 맞춰서 폴더구조같은것도 다 짜주니까 그냥 Run만 누르면 되는 수준이다. 그래서 처음에는 너무 편하고 신기했는데... 그렇다고 Nest가 없는 상황에서 '저는 네스트에서 해주는대로만 해봤는데요'라고 하면 좀 당황스러울것 같아서 조금씩 이제 테스트코드(TDD)에도 내 발판을 놓아보려고 한다. 가장 기본적인 테스트 피라미드이다...