使用Jest测试同一模块中的两个组件

时间:2018-05-24 12:40:35

标签: react-native jestjs react-native-camera

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

谢谢。

0 个答案:

没有答案