Migrate Jest setup scripts from Haste to path-based requires (#24753)
Summary: This is another step in moving RN towards standard path-based requires. All the requires in Jest's setup script have been rewritten to use relative requires. This commit uses relative requires instead of `react-native/...` so that if Facebook were to stop syncing out certain folders and therefore remove code from the react-native package, internal code at Facebook would not need to change. [General] [Changed] - Migrate Jest setup scripts from Haste to path-based requires Pull Request resolved: https://github.com/facebook/react-native/pull/24753 Differential Revision: D15258238 Pulled By: cpojer fbshipit-source-id: aa05dc8ea2e4ba195226e8ec7ba6482b7de03240
This commit is contained in:
Родитель
09f17a4e29
Коммит
59749f527a
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const React = require('React');
|
const React = require('react');
|
||||||
|
|
||||||
const TestRenderer = require('react-test-renderer');
|
const TestRenderer = require('react-test-renderer');
|
||||||
const ShallowRenderer = require('react-test-renderer/shallow');
|
const ShallowRenderer = require('react-test-renderer/shallow');
|
||||||
|
|
|
@ -27,23 +27,50 @@ global.cancelAnimationFrame = function(id) {
|
||||||
clearTimeout(id);
|
clearTimeout(id);
|
||||||
};
|
};
|
||||||
|
|
||||||
jest.mock('setupDevtools');
|
jest.mock('../Libraries/Core/Devtools/setupDevtools');
|
||||||
|
|
||||||
// there's a __mock__ for it.
|
// there's a __mock__ for it.
|
||||||
jest.setMock('ErrorUtils', require('ErrorUtils'));
|
jest.setMock(
|
||||||
|
'../Libraries/vendor/core/ErrorUtils',
|
||||||
|
require('../Libraries/vendor/core/ErrorUtils'),
|
||||||
|
);
|
||||||
|
|
||||||
jest
|
jest
|
||||||
.mock('InitializeCore', () => {})
|
.mock('../Libraries/Core/InitializeCore', () => {})
|
||||||
.mock('Image', () => mockComponent('Image'))
|
.mock('../Libraries/Image/Image', () =>
|
||||||
.mock('Text', () => mockComponent('Text', MockNativeMethods))
|
mockComponent('../Libraries/Image/Image'),
|
||||||
.mock('TextInput', () => mockComponent('TextInput'))
|
)
|
||||||
.mock('Modal', () => mockComponent('Modal'))
|
.mock('../Libraries/Text/Text', () =>
|
||||||
.mock('View', () => mockComponent('View', MockNativeMethods))
|
mockComponent('../Libraries/Text/Text', MockNativeMethods),
|
||||||
.mock('RefreshControl', () => jest.requireMock('RefreshControlMock'))
|
)
|
||||||
.mock('ScrollView', () => jest.requireMock('ScrollViewMock'))
|
.mock('../Libraries/Components/TextInput/TextInput', () =>
|
||||||
.mock('ActivityIndicator', () => mockComponent('ActivityIndicator'))
|
mockComponent('../Libraries/Components/TextInput/TextInput'),
|
||||||
.mock('AnimatedImplementation', () => {
|
)
|
||||||
const AnimatedImplementation = jest.requireActual('AnimatedImplementation');
|
.mock('../Libraries/Modal/Modal', () =>
|
||||||
|
mockComponent('../Libraries/Modal/Modal'),
|
||||||
|
)
|
||||||
|
.mock('../Libraries/Components/View/View', () =>
|
||||||
|
mockComponent('../Libraries/Components/View/View', MockNativeMethods),
|
||||||
|
)
|
||||||
|
.mock('../Libraries/Components/RefreshControl/RefreshControl', () =>
|
||||||
|
jest.requireActual(
|
||||||
|
'../Libraries/Components/RefreshControl/__mocks__/RefreshControlMock',
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.mock('../Libraries/Components/ScrollView/ScrollView', () =>
|
||||||
|
jest.requireActual(
|
||||||
|
'../Libraries/Components/ScrollView/__mocks__/ScrollViewMock',
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.mock('../Libraries/Components/ActivityIndicator/ActivityIndicator', () =>
|
||||||
|
mockComponent(
|
||||||
|
'../Libraries/Components/ActivityIndicator/ActivityIndicator',
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.mock('../Libraries/Animated/src/AnimatedImplementation', () => {
|
||||||
|
const AnimatedImplementation = jest.requireActual(
|
||||||
|
'../Libraries/Animated/src/AnimatedImplementation',
|
||||||
|
);
|
||||||
const oldCreate = AnimatedImplementation.createAnimatedComponent;
|
const oldCreate = AnimatedImplementation.createAnimatedComponent;
|
||||||
AnimatedImplementation.createAnimatedComponent = function(
|
AnimatedImplementation.createAnimatedComponent = function(
|
||||||
Component,
|
Component,
|
||||||
|
@ -55,8 +82,10 @@ jest
|
||||||
};
|
};
|
||||||
return AnimatedImplementation;
|
return AnimatedImplementation;
|
||||||
})
|
})
|
||||||
.mock('ReactNative', () => {
|
.mock('../Libraries/Renderer/shims/ReactNative', () => {
|
||||||
const ReactNative = jest.requireActual('ReactNative');
|
const ReactNative = jest.requireActual(
|
||||||
|
'../Libraries/Renderer/shims/ReactNative',
|
||||||
|
);
|
||||||
const NativeMethodsMixin =
|
const NativeMethodsMixin =
|
||||||
ReactNative.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED
|
ReactNative.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED
|
||||||
.NativeMethodsMixin;
|
.NativeMethodsMixin;
|
||||||
|
@ -66,7 +95,9 @@ jest
|
||||||
|
|
||||||
return ReactNative;
|
return ReactNative;
|
||||||
})
|
})
|
||||||
.mock('ensureComponentIsNative', () => () => true);
|
.mock('../Libraries/Components/Touchable/ensureComponentIsNative', () => () =>
|
||||||
|
true,
|
||||||
|
);
|
||||||
|
|
||||||
const mockNativeModules = {
|
const mockNativeModules = {
|
||||||
AccessibilityInfo: {
|
AccessibilityInfo: {
|
||||||
|
@ -314,9 +345,12 @@ Object.keys(mockNativeModules).forEach(module => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
jest.doMock('NativeModules', () => mockNativeModules);
|
jest.doMock(
|
||||||
|
'../Libraries/BatchedBridge/NativeModules',
|
||||||
|
() => mockNativeModules,
|
||||||
|
);
|
||||||
|
|
||||||
jest.doMock('requireNativeComponent', () => {
|
jest.doMock('../Libraries/ReactNative/requireNativeComponent', () => {
|
||||||
const React = require('react');
|
const React = require('react');
|
||||||
|
|
||||||
return viewName =>
|
return viewName =>
|
||||||
|
|
Загрузка…
Ссылка в новой задаче