import { decrease } from "@/services/repositories/decrease.repository";
jest.mock("@/services/repositories/decrease.repository");
describe('테스트코드 작성 시작...', () => {
...
test('취소하기 중 어떤 유닛 테스트...', async () => {
(decrease as jest.Mock).mockResolvedValue(...);
...
jest로 테스트하는 코드를 보면 위처럼 작성하는 코드를 볼 수 있다.
jest.mock을 사용하면 모듈 내의 모든 함수와 클래스를 자동으로 모킹할 수 있다.
그럼 위 코드는 어떻게 동작하는걸까?
@/services/repositories/decrease.repository 모듈의 모든 함수를 모킹할 수 있다.
이 모듈에서 가져오는 모든 함수는 이제 Jest의 모킹 함수로 대체된다.
이를 통해 실제 구현을 호출하지 않고, 테스트에서 원하는 대로 함수의 동작을 제어할 수 있게 된다.
그래서 import 한 모든 함수를 모킹 함수로 대체해서 실제 구현하지 않겠다는 뜻이다.
(decrease as jest.Mock).mockResolvedValue({
result: 2
});
decrease를 모킹 구현 했으니, 그 성공한 리턴값은 2가 될것이다. 라고 결과값을 수작업으로 만들어준다.
위처럼 함수를 가짜로 실행시키고, 가짜 실행시킨 결과값은 뭐가 될 것이다
정해주는게 mocking 함수이다.
jest testcode 사용하다보니 결국 request, response를 다 알고 있지 않으면 해당 테스트코드를 짜기 어렵다.
request, response를 제대로 리턴해주기 위해 Good Case 만 짜다보니 좋은 테스트 코드가 안짜이는 것 같다.
아직 테코를 많이 안짜봐서 그런걸까..
ps..
https://sjparkk-dev1og.tistory.com/221#google_vignette
참고해보니 테스트코드를 가지고 K6S 라는 것을 설치해 부하테스트를 할 수 있다.
시스템이 스트레스테스트를 통해 트래픽을 어느정도 감당할 수 있는지 알 수 있으므로 필요하겠다고 느꼈다.
'JaveScript > NodeJS' 카테고리의 다른 글
Node.js 어플리케이션 단에서 동시성 처리하기 (0) | 2024.06.20 |
---|---|
nvm 버전 변경 (0) | 2024.05.24 |
npm 배포하기 (0) | 2024.05.19 |
MaxListenersExceededWarning (1) | 2024.04.07 |
NodeJS 로그 터미널에서 확인하기 (0) | 2023.07.19 |