我正在尝试使用
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;
});
有什么建议吗?
经过大量尝试模拟这一点的实验,终于下面的模拟成功了。
// 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
};
});