我有一个React Native组件,它与一个自定义iOS类通信,因此我使用NativeModules en NativeEventEmitter向本机代码发送命令和从本机代码接收命令。
import {NativeModules, NativeEventEmitter} from 'react-native';
/* inside the constructor I do some setup: */
const { NetworkManager } = NativeModules;
const emitter = new NativeEventEmitter(NetworkManager);
/* here I subscribe to an event from the emitter */
public startDiscovery() {
const deviceFoundSubscription = this._emitter.addListener(
"DeviceDiscovered",
(device) => this.deviceFound(device)
);
this.NetworkManager.startDiscovery();
}
这段代码运行得很好,但是现在我想用Jest编写一些测试,这就是我遇到的问题。我该如何继续为事件侦听器编写测试呢?我想在Jest测试中模拟DeviceDiscovered事件,然后Assert侦听器被调用。
3条答案
按热度按时间aiqt4smr1#
为了解决我的问题,我使用一个日常的JS事件发射器来模拟RCTDeviceEventEmitter:
然后在jest的setupFile中,我导入了mock来替换react-native实现。
最后是我的实际测试代码:
92vpleto2#
在您
jest/setup.js
中添加你的相对路径:
but5z9lq3#