Jest 또는 단위 테스트를 실행할 때. 테스트는 노드 환경에서 실행 중입니다. 따라서 네이티브 구성 요소/라이브러리 (예 : 비동기 저장소 또는 SQLite)가있는 모듈에 액세스하려고하면 코드가 test 환경에서 중단됩니다.
이 문제를 해결하기 위해 Jest는 모듈 mock을 고안했습니다. 내 프로젝트에서 내가하는 일은 내부적으로 네이티브 모듈을 사용하는 모든 node_module에 대한 것입니다.이 모듈을위한 글로벌 모의를 만듭니다.
당신에게 어쩌면
__mocks__/react-native-device-info
를 단순히 그렇게
.
├── README.md
├── __mocks__
│ ├── base-64.js
│ ├── react-native-animatable.js
│ ├── react-native-config.js
│ ├── react-native-device-info.js
│ ├── react-native-fetch-blob.js
│ ├── react-native-firebase.js
│ ├── react-native-google-analytics-bridge.js
│ ├── react-native-map-markerclustering.js
│ ├── react-native-maps.js
│ ├── react-native-simple-download-manager.js
│ ├── react-native-simple-toast.js
│ ├── react-native-splash-screen.js
│ ├── react-native-testfairy.js
│ ├── react-native-version-number.js
│ └── react-native.js
├── __tests__
│ └── index.test.js
├── app
│ ├── App.container.js
│ ├── __tests__
│ ├── assets
│ ├── components
│ ├── config
│ ├── index.js
│ ├── language
│ ├── pages
│ ├── redux
│ ├── routes
│ ├── themes
│ └── utils
├── app.json
├── circle.yml
├── index.js
├── package.json
└── yarn.lock
같은 루트 디렉토리에 폴더 __mocks__
을 만들어야 할 그리고 예를 들어
__mocks__/react-native-firebase.js
module.exports = {
crash:() => ({
setCrashCollectionEnabled: jest.fn()
}),
auth:() => ({
signInAnonymously: jest.fn()
}),
database:() => ({
ref:() => ({
on: jest.fn()
})
}),
config:() => ({
fetch: jest.fn(),
setDefaults: jest.fn(),
getValue: jest.fn()
}),
messaging: jest.fn(() => ({
requestPermissions: jest.fn(),
subscribeToTopic: jest.fn(),
getToken: jest.fn(Promise.resolve),
onMessage: jest.fn(),
getInitialNotification: jest.fn(Promise.resolve),
onTokenRefresh: jest.fn()
}))
};
볼 수 있습니다 또는하려면
const mockmod = jest.genMockFromModule('react-native-device-info'); module.exports = mockmod;
포인트가 자동으로 u는 조롱 모듈 실행해야합니다 앱의 ENV에 당신이있을 것이다 시험 ENV의 결과 유 require('react-native-device-info')
수행 할 때이 파일을 사용하는 것입니다 테스트 ENV의 농담 중에 ...입니다 실제 노드 모듈.