-
Notifications
You must be signed in to change notification settings - Fork 44
Expand file tree
/
Copy pathjest.setup.ts
More file actions
60 lines (53 loc) · 1.69 KB
/
Copy pathjest.setup.ts
File metadata and controls
60 lines (53 loc) · 1.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import * as ReactNative from 'react-native';
import { MockRNIterableAPI } from './MockRNIterableAPI';
import { MockLinking } from './MockLinking';
const mockNativeEventEmitter =
new (require('events').EventEmitter)() as import('events').EventEmitter;
const mockNativeEventEmitterConstructor = jest.fn().mockImplementation(() => ({
addListener: (
eventType: string,
listener: (...args: unknown[]) => void
) => {
mockNativeEventEmitter.addListener(eventType, listener);
return {
remove: () => mockNativeEventEmitter.removeListener(eventType, listener),
};
},
emit: (eventType: string, ...args: unknown[]) =>
mockNativeEventEmitter.emit(eventType, ...args),
removeAllListeners: (eventType?: string) =>
eventType
? mockNativeEventEmitter.removeAllListeners(eventType)
: mockNativeEventEmitter.removeAllListeners(),
removeListener: (
eventType: string,
listener: (...args: unknown[]) => void
) => mockNativeEventEmitter.removeListener(eventType, listener),
listenerCount: (eventType: string) =>
mockNativeEventEmitter.listenerCount(eventType),
}));
jest.mock(
'react-native/Libraries/EventEmitter/NativeEventEmitter',
() => mockNativeEventEmitterConstructor
);
jest.mock('react-native-webview', () => {
const { View } = require('react-native');
return {
WebView: View,
};
});
jest.doMock('react-native', () => {
// Extend ReactNative
return Object.setPrototypeOf(
{
// Mock RNIterableAPI
NativeModules: {
...ReactNative.NativeModules,
RNIterableAPI: MockRNIterableAPI,
},
Linking: MockLinking,
NativeEventEmitter: mockNativeEventEmitterConstructor,
},
ReactNative
);
});