0

所以我正在为我的 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 包中单独文件中的单独组件。我怎么能嘲笑他们俩?

谢谢你。

4

0 回答 0