[javascript] Jest와 함께 ESLint를 사용하는 방법
Jest 테스트 프레임 워크와 함께 ESLint 린터를 사용하려고합니다.
Jest 테스트는 다음과 같은 일부 글로벌에서 실행됩니다 jest
. 그러나 까다로운 것은 디렉토리 구조입니다 .Jest에서 테스트는 __tests__
폴더에 소스 코드가 포함되어 있으므로 디렉토리 구조는 다음과 같습니다.
src
foo
foo.js
__tests__
fooTest.js
bar
bar.js
__tests__
barTest.js
일반적으로 단일 디렉토리에서 모든 테스트를 수행 .eslintrc
하고 전역을 추가하기 위해 파일을 추가 할 수는 있지만 .eslintrc
모든 단일 __test__
디렉토리에 파일을 추가하고 싶지는 않습니다 .
지금은 테스트 전역을 전역 .eslintrc
파일에 추가했지만 이제는 jest
테스트되지 않은 코드에서 참조 할 수 있으므로 “올바른”솔루션처럼 보이지 않습니다.
디렉토리 이름 또는 그와 유사한 것을 기반으로 패턴을 기반으로 규칙을 적용하는 방법이 있습니까?
답변
문서 는 이제 다음을 추가 할 수 있음을 보여줍니다.
"env": {
"jest": true
}
당신에게 .eslintrc
어느 린터 오류 / 경고를 제거, 환경에 모든 농담 관련된 일을 추가합니다.
답변
ESLint는 버전> = 4에서이를 지원합니다.
/*
.eslintrc.js
*/
const ERROR = 2;
const WARN = 1;
module.exports = {
extends: "eslint:recommended",
env: {
es6: true
},
overrides: [
{
files: [
"**/*.test.js"
],
env: {
jest: true // now **/*.test.js files' env has both es6 *and* jest
},
// Can't extend in overrides: https://github.com/eslint/eslint/issues/8813
// "extends": ["plugin:jest/recommended"]
plugins: ["jest"],
rules: {
"jest/no-disabled-tests": "warn",
"jest/no-focused-tests": "error",
"jest/no-identical-title": "error",
"jest/prefer-to-have-length": "warn",
"jest/valid-expect": "error"
}
}
],
};
다음은 eslint config의 “override in overrides”제한에 대한 해결 방법입니다 (여기의 다른 답변에서 투표하십시오!).
overrides: [
Object.assign(
{
files: [ '**/*.test.js' ],
env: { jest: true },
plugins: [ 'jest' ],
},
require('eslint-plugin-jest').configs.recommended
)
]
에서 https://github.com/eslint/eslint/issues/8813#issuecomment-320448724
답변
다음과 같이 테스트 파일에서 테스트 환경을 설정할 수도 있습니다.
/* eslint-env jest */
describe(() => {
/* ... */
})
답변
Zachary의 답변을 완료하려면 eslint config의 “override in overrides”제한에 대한 해결 방법이 있습니다.
overrides: [
Object.assign(
{
files: [ '**/*.test.js' ],
env: { jest: true },
plugins: [ 'jest' ],
},
require('eslint-plugin-jest').configs.recommended
)
]
에서 https://github.com/eslint/eslint/issues/8813#issuecomment-320448724
답변
패턴 기반 구성은 ESLint의 2.0.0 릴리스로 예정되어 있습니다. 그러나 지금은 주석에 언급 된대로 두 개의 개별 작업을 만들어야합니다. 하나는 테스트 용이고 나머지 하나는 나머지 .eslintrc 파일을 제공하면서 두 코드를 모두 실행합니다.
PS ESLint의 다음 릴리스에는 jest 환경이 있으며 필요한 모든 전역을 등록합니다.
답변
나는 문제를 해결했다 REF를
운영
# For Yarn
yarn add eslint-plugin-jest -D
# For NPM
npm i eslint-plugin-jest -D
그런 다음 .eslintrc
파일에 추가 하십시오
{
"extends": ["airbnb","plugin:jest/recommended"],
}
답변
환경 만 추가 __tests__
폴더
기본 구성을 확장 하는 .eslintrc.yml
파일을 __tests__
폴더 에 추가 할 수 있습니다 .
extends: <relative_path to .eslintrc>
env:
jest: true
하나만 있다면 __tests__
폴더 경우이 솔루션은 필요한 경우에만 jest 환경을 다루기 때문에 최상입니다.
많은 테스트 폴더 다루기
더 많은 테스트 폴더가있는 경우 (OP 사례) 해당 파일을 추가하는 것이 좋습니다. 그리고 그 폴더가 많으면 간단한 zsh 스크립트로 폴더를 추가 할 수 있습니다.
#!/usr/bin/env zsh
for folder in **/__tests__/ ;do
count=$(($(tr -cd '/' <<< $folder | wc -c)))
echo $folder : $count
cat <<EOF > $folder.eslintrc.yml
extends: $(printf '../%.0s' {1..$count}).eslintrc
env:
jest: true
EOF
done
이 스크립트는 __tests__
폴더 를 찾고 .eslintrc.yml
위에 표시된 구성에 파일을 추가합니다 . 이 스크립트는 부모를 포함하는 폴더 내에서 시작해야합니다 .eslintrc
.