라이브러리 설치
npm i jest supertest -D
https://teamsparta.notion.site/4-1-45e4731294bc46149a8258f13df54a74#2106a1ca47af42c9b469fc22d5c00f84
"내 코드가 멀쩡하다!" 라고 증명하기 위한게 아니고, "내 코드가 멀쩡하다면 이렇게 결과가 나와야 한다!
-test(): 단위 테스트를 묶어주는 함수입니다.
-expect(): 특정 값이 만족되는지(정상적인지) 확인하기 위한 표현식을 작성할수 있게 해주는 함수입니다.
test("입력한 이메일 주소에 공백(스페이스)이 존재하면 이메일 형식이 아니다.", () => {
expect(isEmail("myemail@domain.com")).toEqual(true);
expect(isEmail("my email@domain.com")).toEqual(false);
});
특정 Method를 Mocking하기 위해 사용됩니다.
즉, 테스트에서 시간 또는 비용이 많이들거나 의존성이 있는 코드를 실제로 실행하지 않고 호출 여부, 입력한 값의 일치 여부와 같은 정보를 확인하기 위해 사용하는 가짜 객체입니다.
-자주 사용하는 Mock expect 문법
.toHaveBeenCalledTimes(number)
Mock이 몇번 호출되었는지 검증합니다.
.toHaveBeenCalledWith(arg1, arg2, ...)
어떤 인자를 이용해 Mock이 호출되었는지 검사합니다.
/^[a-zA-z0-9+_-]+$/ ^정규표현식 시작, $정규표현식 끝, []는 여러문자를 한번에 검사, +는 []안에있는 조건에 맞는 문자가 들어오면 통과해라 뜻
i는 대소문자 구분 없이, g는 문자열 어디에서든 검사한다.
if (!/^[a-z0-9.-]+$/gi.test(domain)) {
return false;
}
-오버 엔지니어링
사람들은 누군가 불필요한 엔지니어링을 한다고 판단할 때 오버엔지니어링이라 부르며 부정적으로 생각한다. 엔지니어링은 어떤 면에서 미래를 위한 투자로 볼 수 있다. 이런 투자가 과열될 때 오버엔지니어링이 되기 쉬운 것 같다. 그래서 개발자는 오버엔지니어링을 하기보다는 적절한 수준의 엔지니어링을 뜻하는 적정엔지니어링을 추구할 필요가 있다고 본다.
https://minslovey.tistory.com/117
-기술부채
일반적인 "부채"가 이자를 내고 돈을 쓰는 시점을 당기는 것처럼 기술 부채는 기술적으로 해결되어야 할 문제들을 뒤로 미루고, 비즈니스 문제를 해결하는 시점을 당기는 것이다.
https://brunch.co.kr/@leehosung/2
-좋은 인터페이스
최고의 인터페이스는 눈에 보이지 않는다.
결국, 사람을 이해해야 한다.
-유지보수
개발자가 이슈 해결을 위해 기능을 이해하고 코드를 이해하는데 투자되는 시간을 얼만 줄일 수 있는지가 관건이다.
-morking
실제 DB를 연결하지 않아도 테스트해볼수있다. Layered Architecture Pattern으로 분리하면 테스트하기 쉽다.