我正在尝试编写一个jasmine测试,它有一个间谍,
UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): undefined
UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 3): undefined
UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 4): undefined
PromiseRejectionHandledWarning: Promise rejection was handled asynchronously (rejection id: 2)
PromiseRejectionHandledWarning: Promise rejection was handled asynchronously (rejection id: 3)
PromiseRejectionHandledWarning: Promise rejection was handled asynchronously (rejection id: 4)
我的代码非常直接:我创建一个间谍,将它注入到我的代码中,调用我的代码,这将循环调用我的间谍直到它不拒绝,然后监视它被调用了5次。间谍是这样的:
var spy = jasmine.createSpy("spy").and.returnValues(
Promise.reject(),
Promise.reject(),
Promise.reject(),
Promise.reject(),
Promise.resolve(true)
);
// Inject the spy...
// This will resolve only when the Promise-returning function it calls resolves without rejecting.
myFunc()
.then(() => {
expect(spy).toHaveBeenCalledTimes(5);
done();
})
.catch();
被测试的代码在它的链中最后一个空的
如何正确测试被拒绝的承诺?我觉得我需要这样的东西给茉莉。
这是因为您在事件队列稍后的某个地方捕获被拒绝的承诺,而不是在创建承诺的同一个调用堆栈中。
解决办法是:
null
var unsafeReject = p => {
p.catch(ignore=>ignore);
return p;
};
var p = Promise.reject("will cause warning");
//will catch reject on queue, not on stack
setTimeout(
()=>p.catch(e=>console.log("reject:",e))
);
var q = unsafeReject(Promise.reject("will NOT cause warning"));
setTimeout(
()=>q.catch(e=>console.log("reject:",e))
);
我有一些mocha/chai/chai-http测试,它们遵循下面的结构,但是,每当一个测试失败时,我会得到一个 ,我似乎不知道它的来源。 UnhandledPromiserEjectionWarning:未处理的承诺拒绝。此错误可能是由于不带catch块的异步函数内部引发的,或者是由于拒绝了未用。catch()处理的承诺。 我尝试在 后面添加一个 承诺.reject(err)/code>,但也不
我正在使用Firebase云消息服务辅助角色处理后台推送通知。 当通知(其中包含一些数据的URL)被点击,我想要么: 焦点窗口,如果它已经在所需的URL 导航到URL并聚焦它,如果已经有一个活动的选项卡打开 如果上述条件都不满足,则打开URL的新窗口 点1和3与下面的SW代码一起工作。 出于某种原因,第2点不起作用。promise被拒绝,原因是: 我认为这可能是由于缺少https,但从我的阅读来看
我试图用chai-as-promedied,Mocha和“should”方言测试一个被拒绝的承诺的细节。承诺由蓝鸟来实现。 这很好用: 该错误有一个“Status”属性。我想断言状态是401 这不起作用: 似乎任何不引用“rejectedWith”或rejectedWith(Error)的断言尝试都将失败,并且只是将错误输出到控制台。 如何深究被拒的原因?
所以,我在测试一个依赖于事件发射器的组件。为此,我想出了一个解决方案,使用mocha+chai的承诺: 在控制台上,我得到了一个“unhandledPromiserEjectionWarning”,尽管reject函数正在被调用,因为它会立即显示消息“assertionError:Promise Error" (Node:25754)UnhandledPromiseRejectionWarning
我在想什么时候我该拒绝一个promise。我发现了几个关于这个话题的问题,但找不到合适的答案。我什么时候应该拒绝promise? 本文http://howtonode.org/6666a4b74d7434144cff717c828be2c3953d46e7/promises 说: 解析:一个成功的promise是“已解析”的,它调用正在等待的成功侦听器,并记住为附加的未来成功侦听器解析的值。分辨率
我得到这个错误- (节点:18420)未处理的PromisejectionWarning:TypeError:无法读取未定义的属性“name” (节点:18420)未处理的PromisejectionWarning:未处理的promise拒绝。此错误源于在没有catch块的情况下抛出异步函数的内部,或者拒绝使用未处理的promise。catch()。要在未处理的promise拒绝时终止节点进程,请