【发布时间】:2019-06-14 18:33:01
【问题描述】:
我遇到了一个非常复杂的情况。 我会尽量保持简洁。
所以我在 myModule.js 中有这样的代码:
const lib = require('@third-party/lib');
const myFunction = () => {
const client = lib.createClient('foo');
return new Promise((resolve, reject) => {
client.on('error', (err) => reject(err));
client.on('success', () => {
client.as(param1).post(param2, param3, (err, data) => {
if (err) reject(err);
// Some important logical processing of data
resolve(data);
});
});
});
}
module.exports = { myFunction };
我可以模拟一些东西,例如:createClient。
我无法模拟的是事件部分我什至不知道该怎么做。还有.as().post() 部分。
这是我的开玩笑测试的样子:
const myModule = require('./myModule');
const mockData = require('./mockData');
describe('myFunction', () => {
it('Should resolve promise when lib calls success event', async () => {
try {
const myData = await myModule.myFunction();
expect(myData).toMatchObject(mockData.resolvedData);
} catch (err) {
expect(err).toBeNull();
}
})
});
任何帮助,非常感谢。
我试图找到类似的问题,但在这一点上,我的大脑刚刚停止工作...... 如果您需要更多详细信息,请告诉我。
【问题讨论】:
-
如果我错了,请纠正我,您是否需要使用
post回调返回数据来模拟success事件。我做对了吗? -
在某种程度上,是的。我还想模拟错误事件。但是,如果您给我成功的解决方案,我会从中弄清楚。
标签: javascript node.js ecmascript-6 jestjs es6-promise