Jest를 사용한 테스트용 공유 유틸리티 함수
다양한 Jest 테스트 중에 사용하는 utils 함수가 있습니다.예를 들어 다음과 같은 함수는 fetch 응답을 조롱하기 위한 것입니다.
export const mockFetchJsonResponse = (data) => {
ok: () => true,
json: () => data
};
저는 그 기능을 Import하여 테스트 중에 재사용할 수 있도록 공유하고 싶습니다.예를 들어 다음과 같습니다.
// Some .spec.jsx file
// ...
import {mockFetchJsonResponse} from 'some/path/to/shared/tests/utils.jsx'
// Then I can use mockFetchJsonResponse inside this test
// ...
이러한 공통 유틸리티 기능은 어디에 배치해야 합니까?
프로젝트 폴더는 다음과 같습니다.
components/
CompOne/
__tests__
index.jsx
CompTwo/
__tests__
...
utils/
__tests__
http.js
user.js
...
안에 넣어둘까요?utils
폴더와 다른 유틸리티 기능을 함께 사용할 수 있습니까?그럼 이 기능들에 대해서도 단위 테스트를 작성해야 하나요?
모듈을 명시적으로 Import할 필요 없이 도우미를 글로벌 함수로 표시할 수 있습니다.
- Jest를 사용하면 구성 옵션을 통해 모든 테스트 파일이 실행되기 전에 일부 파일을 구성할 수 있습니다.
- 또한 Jest는 사용자가 수정할 수 있는 객체를 제공하며, 여기에 추가한 모든 것을 테스트에서 사용할 수 있습니다.
예
패키지.json:
"jest": {
"setupFiles": ["helpers.js"]
}
helpers.delpers:
global.mockFetchJsonResponse = (data) => {
ok: () => true,
json: () => data
};
somecomponent.test.disc:
mockFetchJsonResponse(); // look mom, I can call this like say expect()!
TypeScript 사용
TypeScript는 다음과 같이 불만을 제기합니다.cannot find name 'mockFetchJsonResponse'
선언 파일을 추가하여 이 문제를 해결할 수 있습니다.
helpers.d.ts:
declare function mockFetchJsonResponse(data: any): any;
신규 작성tsconfig.test.json
이 파일을 파일에 추가한다.files
메인 tsconfig의 섹션과 확장:
{
"extends": "./tsconfig.json",
"files": ["./.jest/helpers.d.ts"]
}
고객님의 고객명jest.config.js
파일, 새로운 글로벌 설정 추가ts-jest
새로운 tsconfig 파일을 사용하려면:
// ...
globals: {
"ts-jest": {
tsconfig: "tsconfig.test.json"
}
}
// ...
「파일을 어디에 둘 것인가」라고 하는 직접적인 질문에 대답하는 것은 아닙니다만, 어쨌든 이것은 여러분에게 달려 있습니다.이러한 파일을 지정하기만 하면 됩니다.setupFiles
부분.없기 때문에import
시험에 필요한 것은 별로 중요하지 않다.
테스트 도우미에 대해서는 잘 모르겠습니다.사양 파일 자체와 같은 테스트 인프라의 일부입니다.그리고 우리는 시험을 위해 시험을 치르지 않아. 그렇지 않으면 절대 멈추지 않을 거야.물론, 여러분에게 달려 있습니다. 예를 들어, 이면에 있는 논리가 정말로 복잡하고 이해하기 어려운지 여부를 말하십시오.그러나 도우미가 너무 복잡하고 복잡한 논리를 제시하면 테스트 자체를 이해할 수 없게 됩니다. 동의하십니까?
그 기사에 대한 찬사를 보냅니다.상대해 본 적이 없다globals
아까 농담으로.
TL;DR; 생성/__utils__/
및 testPathIgnorePatterns 업데이트
완전한 답변:
제안 하나 하겠습니다.
testPathIgnorePatterns: ['/__fixtures__/', '/__utils__/'],
사용하고 있다/__tests__/
테스트 및 테스트에 사용되는 데이터가 포함된 폴더를 추가해야 할 경우가 있습니다./__fixtures__/
더입니니다다
여러은 로직에 됩니다./__utils__/
)/__tests__/
)
자세한 내용은 testPathIgnorePatterns에 대한 자세한 내용을 참조하십시오.
또 다른 접근법은 테스트 디렉토리가 있고 여기에 도우미를 이동하는 것입니다.
src/
components/
utils/
...
test/
testHelpers.js
그리고 테스트에서:
// src/components/MyComponent.spec.js
import { helperFn } from '../../test/testHelpers';
이점:
- 함수의 출처를 명확히 하다
- 테스트가 필요한 도우미와 그렇지 않은 도우미를 구분 »
결점:
test
되어 있으면 수 .- AFAIK 이 접근방식은 공식 문서에 명시되어 있지 않다.
GitLab이 RoR 프로젝트에서 이 접근방식을 구현하고 있는 것 같습니다.
① 어떤 방법을 사용하든 테스트 도우미를 테스트하지 마십시오.도우미가 실패하면 테스트도 실패해야 합니다.그렇지 않으면 도우미가 전혀 도움이 되지 않습니다.
언급URL : https://stackoverflow.com/questions/50411719/shared-utils-functions-for-testing-with-jest
'source' 카테고리의 다른 글
ORA-12505, TNS: 리스너가 현재 접속 기술자에 지정된SID를 인식하지 않음 (0) | 2023.03.05 |
---|---|
SQL*Plus를 사용하여 Oracle 11g에서 데이터베이스를 표시하는 방법 (0) | 2023.03.05 |
부트스트랩4에서 Navbar 요소를 균등하게 띄우는 방법 (0) | 2023.03.05 |
기본 클래스의 멤버에 액세스하는 중 (0) | 2023.03.05 |
Create-react-app - 플러그인 "react"의 오류 ".eslintrc.json"과 "BaseConfig" 간에 충돌했습니다. (0) | 2023.03.05 |