【发布时间】:2018-06-13 17:43:22
【问题描述】:
我在运行测试时遇到了问题(在 Node 中),
我正在模拟一个被拒绝的承诺,我的代码应该重试(如果可能相关,请使用 promise-retry)。
当我使用stub.returns(Promise.reject(error)模拟被拒绝的承诺时
我收到了一个未捕获的错误警告(对于我的dummyErrors),即使我在调用我的函数时发现了错误...
-注意,这些未捕获的错误只发生在单元测试中,而不是实际调用中。
const mockedFunction = sinon.stub();
const dummyError = new Error('Document is locked');
mockedFunction.onCall(0).returns(Promise.reject(dummyError));
mockedFunction.onCall(0).returns(Promise.reject(dummyError));
mockedFunction.onCall(0).returns(Promise.reject(dummyError));
mockedFunction.onCall(1).returns(Promise.resolve({approved: true}));
我发现通过更改为使用stub.rejects() 语法:
mockedFunction.onCall(0).rejects(dummyError);
mockedFunction.onCall(1).rejects(dummyError);
mockedFunction.onCall(2).rejects(dummyError));
mockedFunction.onCall(3).resolves({approved: true});
我不再收到未捕获的错误警告。
我的问题解决了,但是我想更好地理解为什么,我查看了 sinon 源代码,看起来.rejects 的实现没有什么不同
【问题讨论】:
标签: javascript node.js promise sinon chai-as-promised