inflearn logo
강의

講義

知識共有

テスト with Jest: ゼロ秒に正しく学ぶ

mockImplementation, mockReturnValue

mockfunction에 대해서

54

gpdbsapab

投稿した質問数 2

0

안녕하세요 선생님

mockfunction에 대해서 설명 듣다가 질문이 생겨 글 남깁니다.

mockfunction이 좋고 유용한 이유가 기존 함수를 변경할 수 있다는 점이라고 하셨는데 , 기존 함수를 변경해서 테스트를 왜 하는지 모르겠습니다 .추후 강의에서 나오는 부분일까요?

 

그러니까 "필요성"에 대해서 공감이 가지 않는 것 같습니다,, 개발한 함수가 잘 돌아가는지에 대해서 테스트하면 되는 것인데 왜 다른 함수로 바꿔서 테스트를하나요? 그게 버그잡기 등의 효과가 있나요? 있다면 예를 들면 어떤상황이 있을지 알려주심 넘 감사할것 같습니다. 감사합니다

supertest jest 소프트웨어-테스트 unittest

回答 2

0

zerocho

개발한 함수를 바꾸는 게 아니고, 개발한 함수가 사용하고 있는(또는 의존하고 있는) 다른 함수를 바꾸는 것입니다. 유닛 테스트의 목적은 내가 테스트하고싶은 함수 하나만 잘 돌아가나 테스트하는 것이지, 테스트하고싶은 함수 내부의 다른 라이브러리함수까지 잘 돌아가나 테스트하는 게 아닙니다. 내부의 다른 라이브러리 함수까지 테스트하는 것은 통합테스트라고 따로 있습니다.

예를 들어 a라는 함수가 있고, a 함수가 데이터베이스에 insert를 하는 함수를 호출한다고 하면, a 함수 테스트를 돌릴 때마다 데이터베이스에 값이 insert됩니다. 이런 걸 막으려면 insert하는 함수를 모킹하고, 단순히 호출되었는지만 체크하는 겁니다.

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.
김혜윤 님

mock function(모의 함수)을 사용하는 이유는 여러 가지가 있습니다. 개발한 코드가 잘 작동하는지 테스트할 때, 항상 모든 실제 종속성을 사용할 수 있는 것은 아닙니다. 모의 함수를 통해 다음과 같은 상황에서 유용하게 사용할 수 있습니다:

  1. 외부 종속성 제거: 어떤 함수가 외부 API나 데이터베이스에 의존하는 경우, 이를 호출하면 테스트가 느려지거나 결과가 예측할 수 없게 될 수 있습니다. 모의 함수를 사용하여 외부 종속성을 제거하고 빠르고 신뢰할 수 있는 테스트를 작성할 수 있습니다.

  2. 비정상적인 상황 시뮬레이션: 특정 오류나 경계 상황을 테스트하고자 할 때 실제로 그런 상황을 재현하기 어렵거나 위험할 수 있습니다. 예를 들어, 네트워크 오류나 서버 중단 상황을 테스트하려면 모의 함수를 통해 그러한 상황을 인위적으로 만들어낼 수 있습니다.

  3. 테스트 격리: 단위 테스트는 테스트할 항목을 독립적으로 유지하는 것이 중요합니다. 모의 함수를 사용하면 다른 부분에서 영향을 받지 않도록 만들 수 있습니다.

예를 들어, 결제 시스템을 개발할 때, 결제 API를 매번 호출하기 보다는 mock function으로 결제 성공 또는 실패를 시뮬레이션하여 다양한 시나리오를 테스트할 수 있습니다. 이것은 테스트 속도를 높이고 테스트 실행 비용을 줄입니다.

이해에 도움이 되셨길 바랍니다. 감사합니다.

참고 자료: Spring Boot Reference Documentation에서 모킹에 대한 예제들.

UserService, CertificationService 책임 분리 기준 질문

0

28

1

레이어드 아키텍처에서 도메인 중심 패키지 구조를 적용하거나 변화하는 시점이 있을까요?

1

49

2

POJO에서 Spring Test로 넘어갈 때 누락(해결됨)

0

36

1

섹션 4) 8. 실무 QA의 관찰 포인트 이해 강의 질문

0

43

1

tryMove(..) 메서드 ArrayIndexOutOfBoundsException 제보

1

67

2

AvailableUsers

0

47

1

선생님, 테스트 코드 제보 강의는 언제쯤 올라오나요?

0

76

2

mockfunction에 대해서

0

52

1

강의 교안

0

117

2

jest-extended 에러 해결

0

155

1

npx cross-env NODE_OPTIONS="$NODE_OPTIONS --experimental-vm-modules" jest 터미널 에러

1

196

1

안녕하세요 jest toHaveBeenCalledTimes 관련 질문드립니다.

0

166

2

안녕하세요 제로초님

0

166

1

제로초님 강의 교안을 볼 수 있는 곳이 있을까요?

0

234

3

jest.fn()으로 모킹 함수를 만들어 expect() 할 경우 undefined 출력됩니다

0

103

1

jest-extended 설정 중 TypeError

0

168

1

클래스는 어떻게 모킹하나요?

0

158

1

호출 순서 테스트, mock 객체, jest-extended 강의 내용중 TypeError가 나는데요!ㅠㅠ

0

137

1

모듈 모킹 시 메소드 동작 문제

0

160

1

vsCode 내에서 Jest 설정 할 때 setting.json 내 설정 시 궁금한 점이 있습니다.

0

442

1

비동기 함수 테스트 중 특정 케이스 에러

0

194

1

TS로 변경 시 "type": "module" 제거 이유가 궁금합니다.

0

299

2

jest.config.js 파일 내용 다른 분들 참고

0

329

2

강의 교안

0

257

2