所以我正在为我的 React Native 应用程序设置一些 Jest 测试,但是在尝试模拟 react-native-camera 时遇到了问题。
react-native-camera 目前分为两个实现 - RCTCamera 和 RNCamera - 我正在使用它们。用于 Android 的 RCTCamera 和用于 iOS 的 RNCamera。
因此,当我的测试套件遇到这样的行时,它会遇到很大的问题:
type: ((Platform.OS === 'android') ? Camera.constants.Type.back : RNCamera.Constants.Type.back),
我已经成功地模拟了 Camera 组件及其常量,如下所示:
import React from 'react';
const constants = constants = {
Aspect: {},
BarCodeType: {},
Type: {},
CaptureMode: {},
CaptureTarget: {},
CaptureQuality: {},
Orientation: {},
FlashMode: {},
TorchMode: {}
};
class Camera extends React.Component {
static constants = constants
render() {
return null;
}
}
Camera.constants = constants;
export default Camera;
然后在测试用例中这样做:
jest.mock('react-native-camera', () => require.requireActual('../../__mocks__/react-native-camera').default);
但这使 RNCamera 未定义。
我是 Jest 的新手,所以我还在学习。Camera 和 RNCamera 是 react-native-camera 包中单独文件中的单独组件。我怎么能嘲笑他们俩?
谢谢你。