我正在尝试用 Jest 测试承诺链序列:
someChainPromisesMethod: function() {
async()
.then(async1)
.then(async2)
.then(result)
.catch(error);
}
虽然测试单一承诺有很好的记录,但不确定测试这种链的正确方法是什么(不确定 TBO 该怎么做)。让我们假设所有异步都被模拟并且只解析其主体中的承诺(Promise.resolve)。
所以我需要一些可以测试整个序列的东西。
您可以使用笑话.fn() https://facebook.github.io/jest/docs/api.html#jest-fn-implementation模拟实现并检查函数被调用的内容并返回您想要的内容。你需要嘲笑所有async
您的函数中包含的函数并返回您想要的内容。
e.g.
async = jest.fn(() => {
return Promise.resolve('value');
});
async1 = jest.fn(() => {
return Promise.resolve('value1');
});
async2 = jest.fn(() => {
return Promise.resolve('Final Value');
});
您可以在测试中使用它作为
it('should your test scenario', (done) => {
someChainPromisesMethod()
.then(data => {
expect(async1).toBeCalledWith('value');
expect(async2).toBeCalledWith('value1');
expect(data).toEqual('Final Value');
done();
});
});
但是,如果您的链中有逻辑,我会展平您的链并单独测试它们,这样您就可以轻松测试所有可能性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)