如何模拟/模拟在PubNub . addlistener中添加的笑话测试PubNub事件?



我有一个使用PubNub的包,我试图用jest测试覆盖所有包文件,但是我有一个问题:我找不到覆盖侦听器内部事件的方法

// add listener
const listener = {
// Need to cover these cases (status and message)
status: (statusEvent) => {
if (statusEvent.category === "PNConnectedCategory") {
console.log("Connected");
}
},
message: (messageEvent) => {
// Process message
}
};
this.pubnub.addListener(listener);
this.pubnub.subscribe({
channels: [this.channel]
});

我附上了一个屏幕,我需要覆盖测试的部分[![未覆盖文件部分][1]][1]如何模拟/模拟在PubNub . addlistener中添加的笑话测试PubNub事件?

describe("publishPubNub test suites", () => {  
const sideEffect = function (options) {
pubnubService.publishPubNub(options);
return true;
} 
it("successfull", () => {
//TODO: mock event here
const isCompleted =  sideEffect(publishPubNubOptions)
expect(isCompleted).toBeTruthy();
});
})

谢谢你的帮助和建议。[1]: https://i.stack.imgur.com/tF3c2.png

每当建立连接(或发生其他连接事件)时,将调用侦听器状态处理程序。每当应用程序接收到它以前订阅过的消息时,将调用消息处理程序。

你可以:

  1. 在真实的PubNub实例上测试您的应用程序,尽管这需要Internet连接。

  2. 创建模拟库。PubNub不提供官方的模拟库,所以您需要自己编写。根据您的图像执行如下命令:

'use strict';
class PubNub {
constructor(pubKey, subKey, uniqueId) {
this.listener = {}
}
addListener(listener) {
this.listener = listener;
}
subscribe(channelsObj) {
this.listener.status({"category": "PNConnectedCategory"})
}
publishPubNub(options) {
this.listener.message({"message": {"request": {"decision": "approved"}}})
}
}
module.exports = PubNub;

最新更新