source

Jest를 여러 프리셋으로 동시에 사용할 수 있습니까?

ittop 2023. 3. 8. 21:47
반응형

Jest를 여러 프리셋으로 동시에 사용할 수 있습니까?

jsdom과 react-native와 같이 여러 사전 설정과 함께 Jest를 사용할 수 있습니까?

웹 및 React Native 환경에서 모두 작동하는 React 컴포넌트를 테스트하고 싶습니다.문제는 구성 요소가 React Native 라이브러리 또는 일부 문서의 메서드를 사용할 수 있다는 것입니다.

몇 가지 테스트를 실행하면 농담의 답변이 나옵니다.

'react-native-implementation.js'에서 'NetInfo' 모듈을 찾을 수 없습니다.

추가하려고 하면

"jest": {
  "preset": "react-native"
}

패키지화 합니다.제이슨, 알았어:

ReferenceError: 창이 정의되지 않았습니다.

프리셋은 단순한 Javascript 객체이기 때문에 많은 경우 단순히 Marge할 수 있습니다.예를 들어, 이렇게 하면ts-jest그리고.jest-puppeteer동시에:

const merge = require('merge')
const ts_preset = require('ts-jest/jest-preset')
const puppeteer_preset = require('jest-puppeteer/jest-preset')

module.exports = merge.recursive(ts_preset, puppeteer_preset, {
    globals: {
        test_url: `http://${process.env.HOST || '127.0.0.1'}:${process.env.PORT || 3000}`,
    },
})

이와 같이 '머지'할 수 없는 특정 옵션이 있는 경우 이러한 사례를 수동으로 처리하십시오.

다음과 같은 선에 따라 확산 연산자를 사용하여 이 작업을 수행할 수 있습니다.


const tsPreset = require('ts-jest/jest-preset')
const puppeteerPreset = require('jest-puppeteer/jest-preset')

module.exports = {
  ...tsPreset,
  ...puppeteerPreset,
  globals: {
    test_url: `http://${process.env.HOST||'127.0.0.1'}:${process.env.PORT||3000}`,
  }, 
}

1개의 프리셋과 typeScript를 원하는 사용자용

const { defaults: tsjPreset } = require('ts-jest/presets')

module.exports = merge.recursive(ts_preset, puppeteer_preset, {
    preset: 'Your_Preset',
    transform: tsjPreset.transform,
    },
})

언급URL : https://stackoverflow.com/questions/51002460/is-it-possible-to-use-jest-with-multiple-presets-at-the-same-time

반응형