programing

Jestwatch에서 파일을 제외하려면 어떻게 해야 합니까?

padding 2023. 10. 10. 20:09
반응형

Jestwatch에서 파일을 제외하려면 어떻게 해야 합니까?

디스크에 쓸 내용을 테스트하기 위해 Jest를 사용하여 약간 특이한 작업을 수행하고 있습니다.을 쓰면.watch하지만 저는 디스크에 무엇인가를 쓸 때마다 테스트가 다시 시작된다는 것을 (분명히) 발견했습니다.

저는 현재 어떤 종류의 구성도 가지고 있지 않고 설명서를 살펴봤지만, 특정 파일을 보는 것을 억제하기 위해 어떤 옵션을 사용해야 하는지 확실히 알 수가 없습니다.코드 적용 및 테스트 실행에서 코드를 제외하는 옵션은 볼 수 있지만 실제 감시자는 볼 수 없습니다.

제 경우에는 이런 설정이 있어서 결과 디렉토리를 억제하고 싶습니다.

  • __tests__
  • __snapshots__Jest됨)
  • results성)
  • 테스트 파일1.js

이거 어떻게 해요?

문서에서 modulePathIgnorePatterns를 추가해야 하는데, 이는 문자열 값의 배열로, 이 값은 다음과 일치합니다.

modulePathIgnorePatterns[array<string>] #

(기본값: []) 모듈 로더에 '보이는' 것으로 간주되기 전에 모든 모듈 경로와 일치하는 regexp 패턴 문자열의 배열입니다.특정 모듈의 경로가 패턴과 일치하는 경우 테스트 환경에서 해당 경로를 사용할 필요가 없습니다.이러한 패턴 문자열은 전체 경로와 일치합니다.프로젝트의 루트 디렉터리 경로를 포함하려면 <rootDir> 문자열 토큰을 사용하여 프로젝트가 루트 디렉터리가 다를 수 있는 다른 환경에서 실수로 모든 파일을 무시하는 것을 방지합니다.예: ['<rootDir>/build/'].

https://facebook.github.io/jest/docs/configuration.html#modulepathignorepatterns-array-string

구성에 추가...

modulePathIgnorePatterns: ["directoryNameToIgnore"]

또는:

modulePathIgnorePatterns: ["<rootDir>/dist/"]

Jest 테스트에서 디렉토리를 제외하려면 testPathIgnorePatterns를 사용합니다.

testPath패턴 무시

"testPathIgnorePatterns": ["directory to ignore"]

아래 파일 패키지.json, "src" 디렉토리를 무시하도록 구성했습니다.

{
      "name": "learn-test",
      "jest": {
        "testPathIgnorePatterns": ["src"]
      },
      "version": "0.1.0",
      "private": true,
      "dependencies": {
        "react": "^16.4.1",
        "react-dom": "^16.4.1",
        "react-scripts": "1.1.4"
      },
      "scripts": {
        "start": "react-scripts start",
        "build": "react-scripts build",
        "test": "jest --watch",
        "eject": "react-scripts eject",

      },

      "devDependencies": {}
    }

를 해서는 안 . 그래도 내부에 있기를 원했는데도 말입니다.__tests__리예:__mocks__).

이러한 경우에는 사용 상대 경로를 사용해서는 안 됩니다(슬래시 없음).package.json파일 추가:

jest: {
  "modulePathIgnorePatterns": ["__mocks__"]
}

그것으로 제 문제가 해결됐습니다.

Jest 문서에 따르면 watchPathIgnorePatterns는 원하는 방향이어야 합니다.Jest 23.x.x 이상에서 작동합니다.

이 구성을 다음에 추가할 수 있습니다.jest.config.js아니면package.json > jest

jest 버전: 27.2.1

테스트 및 적용 대상에서 제외하기 위해:

"testPathIgnorePatterns" : [
  "tests/login/default/MockStrategy.js",
],
coveragePathIgnorePatterns: [
  "tests/login/default/MockStrategy.js"
],

저는 다음 패턴을 사용하며, 이 패턴은 저에게 적합합니다.

collectCoverageFrom: [
    'src/**/*.js',
    '!src/api/graphql/**/*.js',
    '!src/action/**/*.js',
    '!src/utils/dev/*.js',
    '!src/**/*.e2e.js',
],

! 폴더나 파일을 제외한다는 뜻입니다.

전체 폴더를 제외하려면 패키지의 "jest" 속성에 다음을 추가합니다.json 파일:

"modulePathIgnorePatterns": [
  "<rootDir>/src/services"
],

개별 파일을 제외하려면:

"collectCoverageFrom": [
  "!src/index.js"
],

대부분의 경우 다음과 같은 오류가 발생합니다.테스트 제품군에는 하나 이상의 테스트가 포함되어 있어야 합니다.

파일 또는 폴더를 테스트에서 무시하거나 제외하려면 패키지를 수정하십시오.json

블록 "jest"가 존재하지 않으면 다음과 같이 추가합니다.

...
"jest": {
    "collectCoverage": true,
    "testPathIgnorePatterns" : [
      "__tests__/properties.js",
      "__tests__/properties.js.sample"
    ]
},
...

변경을 시도할 때마다 구성 파일을 편집하지 않고 명령 줄 방식을 찾고 있었습니다.

다음은 watch 모드에서 jest를 실행하지만 npm과 독립적인 end-to-end 테스트 폴더는 제외합니다.스크립트 섹션에 포함되어 있을 수도 있지만, 포함되어 있는 경우 "npx"를 제거하는 것을 잊지 마십시오.

npx jest --watchAll --testPathIgnorePatterns "e2e_a/" "e2e_b/"

PS: 일부 테스트, 특히 E2E 테스트는 다음과 같이 순차적으로 실행해야 할 수 있습니다.-i, --runInBandflag. 자체 폴더가 있는 경우 watch mode에서 제외하는 데 유용합니다.따라서 별도의 폴더에 보관하는 것을 선호합니다.

위의 답변에 약간의 혼란이 있다고 생각하기 때문에 이에 대한 저의 2센트입니다.

다음은 패키지의 농담 세그먼트입니다.json 파일:

"jest": {
"testPathIgnorePatterns": ["wallet-svc/src/db/"],
"coveragePathIgnorePatterns": ["wallet-svc/src/db/"],
"modulePathIgnorePatterns": ["wallet-svc/src/db/"],
"moduleFileExtensions": [
  "js",
  "json",
  "ts"
],
"rootDir": "src",
"testRegex": ".*\\.spec\\.ts$",
"transform": {
  "^.+\\.(t|j)s$": "ts-jest"
},
"collectCoverageFrom": [
  "**/*.(t|j)s"
],
"coverageDirectory": "../coverage",
"testEnvironment": "node"
}

제가 "testPathIgnorePatterns", "coveragePathIgnorePatterns" 및 "modulePathIgnorePatterns"의 3가지 무시를 언급한 것을 알아차린 경우.테스트를 실행할 때 파일이 무시되지만 커버리지를 실행할 때 jest가 해당 파일을 무시하지 않고 커버리지 보고서에 표시됩니다.3개의 태그를 모두 포함하는 것이 좋습니다.

이 스레드가 도움이 된다는 것을 알았습니다. https://github.com/facebook/jest/issues/1815#issuecomment-684882428

저도 비슷한 상황이 있었는데요.testRegex에서jest.config.js테스트할 파일을 정확히 지정하는 완벽한 솔루션이었습니다!

testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$'

create-react-app의 최신 버전인 jest: "collectCoverageFrom"을 사용하여 테스트 케이스 보고서 수집에서 파일을 건너뛸 수 있습니다.

"jest": {
    "collectCoverageFrom": [
        "src/**/*.{js,jsx,ts,tsx}",
        "!<rootDir>/src/registerServiceWorker.js",
        "!<rootDir>/src/serviceWorker.js",
        "!<rootDir>/node_modules/"
    ]
},

는 이 을 했습니다에 했습니다.package.jsonindex.js그리고.reportWebVitals.js적용 범위 보고서의 파일입니다.

  "jest": {
    "collectCoverageFrom": [
      "!<rootDir>/src/reportWebVitals.js",
      "!<rootDir>/src/index.js"
    ],
  }

언급URL : https://stackoverflow.com/questions/40486567/how-can-i-exclude-files-from-jest-watch

반응형