来自react-native的Jest模拟DeviceEventEmitter

问题描述 投票:0回答:1

我正在尝试使用

DeviceEventEmitter
react-native
模拟
jest
。实际代码分别在组件安装和卸载时添加和删除侦听器。我尝试了很多解决方案,但没有一个有效。

这些是我试图嘲笑的几种方法。

// type 1
jest.mock('react-native/Libraries/EventEmitter/RCTDeviceEventEmitter', () => {
  return {
     addListener: mockAddListener,
     remove: mockRemove
  }
});


// type 2
jest.mock('react-native/Libraries/EventEmitter/RCTDeviceEventEmitter', () => {
  const DeviceEventEmitter = jest.requireActual('react-native/Libraries/EventEmitter/RCTDeviceEventEmitter');
  return DeviceEventEmitter;
});

有什么建议吗?

react-native unit-testing testing jestjs testcase
1个回答
0
投票

经过大量尝试模拟这一点的实验,终于下面的模拟成功了。

// Make sure you are using the right path for node_modules depending on your test file location
jest.mock('../../node_modules/react-native/Libraries/vendor/emitter/EventEmitter', () => {
    return class EventEmitter {
        emit = jest.fn()
        // Add other methods which ever you need to mock
    };
});
© www.soinside.com 2019 - 2024. All rights reserved.