들어가기에 앞서
참고한 자료를 바탕으로 비전문가가 정리한 글이므로 오류가 있을 수 있습니다.
오류에 대한 피드백은 언제든지 환영합니다. 부디 댓글로 알려주시길 바랍니다. 감사합니다.
발생 원인
WebView를 이용한 지도 컴포넌트 렌더링 테스팅 중 아래와 같은 에러를 만났습니다.
Invariant Violation: TurboModuleRegistry.getEnforcing(...): 'RNCWebView' could not be found. Verify that a module by this name is registered in the native binary.
at invariant (node_modules/invariant/invariant.js:40:15)
at Object.getEnforcing (node_modules/react-native/Libraries/TurboModule/TurboModuleRegistry.js:41:12)
at Object.<anonymous> (node_modules/react-native-webview/lib/NativeRNCWebView.js:2:36)
at Object.<anonymous> (node_modules/react-native-webview/lib/WebView.ios.js:63:1)
TypeScript
복사
추정되는 원인으로는 jest가 'RNCWebView' 모듈을 찾지 못했기 때문에 위 에러가 발생하는 것 같습니다.
해결 방법
관련 자료를 찾던 중 위와 같이 jest.mock을 사용하여 원래 구현 대신 가짜 구현을 사용하여 해결하는 방법을 찾았습니다. 저는 위 코드를 참고하여 아래와 같이 작성했습니다.
jest.mock('react-native-webview', () => {
const { View } = require('react-native')
return {
WebView: (props: { testID: any; source: { html: any } }) => (
<View testID={props.testID}>{props.source.html}</View>
),
}
})
TypeScript
복사
그 결과, 정상적으로 테스트를 통과하였습니다.