测试自定义事件本地响应
发布时间:2020-12-15 05:04:04 所属栏目:百科 来源:网络整理
导读:我正在使用Jest和Enzyme进行测试.我测试正常事件没有问题,但我正在努力找到如何触发和测试来自Native Modules的组件中的事件的正确方法.在我的Jest设置中,我有以下内容: jest.mock('NativeEventEmitter',() = class MockNativeEventEmitter{ addListener =
我正在使用Jest和Enzyme进行测试.我测试正常事件没有问题,但我正在努力找到如何触发和测试来自Native Modules的组件中的事件的正确方法.在我的Jest设置中,我有以下内容:
jest.mock('NativeEventEmitter',() => class MockNativeEventEmitter{ addListener = () => jest.fn() removeListener = () => jest.fn() removeAllListeners = () => jest.fn() }); 但是,我不确定在测试中我如何实际调度事件.因此,例如,当用户摇动设备时,我有一个Native模块.在组件本身内,这样设置如下: shakeEvents: ['shaken],deviceShakeEmitter: {},componentDidMount() { this.deviceShakeEmitter = new NativeEventEmitter(Shake) this.deviceShakeEmitter.addListener('shaken',this['shaken']) }, 我知道对于内置事件我可以使用jest.simulate(‘press’)等,但对于自定义事件,我很难理解我如何在测试中处理这个问题.
我也想这样做,我设法在react-native Github repo中找到解决方案.他们使用普通的JS EventEmitter来模拟NativeEventEmitter:
const EventEmitter = require('EventEmitter'); const RCTDeviceEventEmitter = require('RCTDeviceEventEmitter'); /** * Mock the NativeEventEmitter as a normal JS EventEmitter. */ class NativeEventEmitter extends EventEmitter { constructor() { super(RCTDeviceEventEmitter.sharedSubscriber); } } 现在您只需要设置模拟,并实例化此发射器以发送您喜欢的任何事件: jest.mock('NativeEventEmitter'); const nativeEmitter = new NativeEventEmitter(); nativeEmitter.emit('SomeEventYouListenTo'); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |