2017-07-05 2 views
3

Ich versuche, ein Modul zu verspotten, dass Schiffe mit reagieren-native (nicht 3rd-Party-Module), wie LayoutAnimation:Wie verspotten reagiert-native Modul (nicht 3rd-Party-Modul) mit Scherz

import * as RN from 'react-native' 

RN.LayoutAnimation = jest.fn() 

Aber der Test nicht bestanden mit:

TypeError: Cannot read property 'decelerationRate' of undefined 

    at Object.<anonymous> (node_modules/react-native/Libraries/Components/WebView/WebView.ios.js:555:3254) 
    at Object.get WebView [as WebView] (node_modules/react-native/Libraries/react-native/react-native-implementation.js:73:22) 

gibt es einen anderen Weg, um eine RN-Modul zu verspotten, wie LayoutAnimation/Stummel oder jede andere reagieren-native (nicht 3rd-Party-Modul)?

Antwort

3

Versuchen einfach zu tun jest.mock('LayoutAnimation');

+0

Danke, das hat funktioniert! Kannst du mir mitteilen, wie das funktioniert? Kennt Jest die reaktionsnative API? – rcorrie

+0

In deiner Datei package.json hast du folgendes: '" jest ": {" preset ":" react-native "}'. Also ja, Scherz ist sich der reaktionsnativen API bewusst –

0

Sie diese Nachricht erhalten, weil der Linie №217 in /node_modules/react-native/Libraries/Components/WebView/WebView.ios.js

decelerationRate: ScrollView.propTypes.decelerationRate 

Da Scroll wird ScrollView.propTypes verspottet === undefined

ich dieses Problem gelöst durch Zugabe von:

import {PropTypes} from 'react'; 
ScrollView.propTypes = { decelerationRate: PropTypes.number }; 

Setup Skriptdatei (Datei, die von setupTestFrameworkScriptFile -Eigenschaft in Jest Abschnitt von package.json festgelegt);

Verwandte Themen