Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mocha在测试node.js时给出的错误消息太长_Javascript_Node.js_Testing_Mocha.js - Fatal编程技术网

Javascript Mocha在测试node.js时给出的错误消息太长

Javascript Mocha在测试node.js时给出的错误消息太长,javascript,node.js,testing,mocha.js,Javascript,Node.js,Testing,Mocha.js,我正在学习node.js以及如何测试函数。我在使用mocha时遇到了一个问题:当函数通过测试时,一切都很好,我收到了一条漂亮的消息 但是,如果哪个函数未通过测试(例如,测试结果为0,但我有意编写了预期为1的假设),它会在bash cli控制台中为我提供一英里长的错误消息: 异步函数 (节点:6001)未处理的PromisejectionWarning:AssertionError[ERR_ASSERTION]:0==1 在utils.requestWikiPage.then.resBody(/

我正在学习node.js以及如何测试函数。我在使用mocha时遇到了一个问题:当函数通过测试时,一切都很好,我收到了一条漂亮的消息

但是,如果哪个函数未通过测试(例如,测试结果为0,但我有意编写了预期为1的假设),它会在bash cli控制台中为我提供一英里长的错误消息:

异步函数
(节点:6001)未处理的PromisejectionWarning:AssertionError[ERR_ASSERTION]:0==1
在utils.requestWikiPage.then.resBody(/home/sandor/Documents/learning curve master/node dev course/testing tut/utils/utils.test.js:10:20)
在
在进程中。_tick回调(内部/process/next_tick.js:188:7)
(节点:6001)未处理的PromisejectionWarning:未处理的承诺拒绝。此错误源于在没有catch块的异步函数中抛出,或者拒绝未使用.catch()处理的承诺。(拒绝id:1)
(节点:6001)[DEP0018]弃用警告:未处理的承诺拒绝已弃用。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程。
1) 它应该返回一个html页面
0通过(2秒)
1失败
1) 异步函数
它应该返回一个html页面:
错误:超过2000毫秒的超时时间。对于异步测试和挂钩,确保调用“done()”;如果返回承诺,请确保它已解决。(/home/sandor/Documents/learning curve master/node dev course/testing tut/utils/utils.test.js)
npm错误!代码失效循环
npm错误!错误1
npm错误!发展-course@1.0.0测试:`mocha./testing tut/***.test.js`
npm错误!退出状态1
npm错误!
npm错误!在开发阶段失败-course@1.0.0测试脚本。
npm错误!这可能不是npm的问题。上面可能还有其他日志输出。
npm错误!此运行的完整日志可在以下位置找到:
npm错误/home/sandor/.npm/_logs/2018-07-04T11_31_53_292Z-debug.log

[nodemon]应用程序崩溃-在启动之前等待文件更改…
如果无法解决或出现错误,您需要正确拒绝
#requestWikiPage
中的承诺,然后在测试中处理该拒绝。以下更改可能会解决您问题中的问题(即,让mocha在没有所有额外输出的情况下正确处理失败的测试),但下一步显然是让您的测试通过

注意,我们将拒绝回调添加到
newpromise()
中,而不是
console.log(err)
回调上的
请求中,我们现在使用
拒绝
作为错误回调

//utils.js
函数requestWikiPage(){
常数要求={
主机名:“en.wikipedia.org”,
港口:443,
路径:'/wiki/George_Washington',
方法:“获取”
}
返回新承诺((解决、拒绝)=>{
让req=https.request(reqOpts,(res)=>{
让resBody=“”;
res.setEncoding('utf-8');
res.on('数据',(块)=>{
resBody+=chunk;
});
res.on('结束',()=>{
决议(resBody);
});
});
请求开启(“错误”,拒绝);
请求结束();
});
}

module.exports.requestWikiPage=requestWikiPage;
在测试用例中设置
this.timeout(10000)
,然后重试。默认情况下,它有
2000ms
timeout。这就是您的意思吗?:description('Async functions',function(){it('it'应该返回html页面',(done)=>{this.timeout(10000);utils.requestWikiPage().then(resBody=>{assert.equal(resBody.indexOf(“”),1);done();});});是的,你可以这样做……很抱歉,仍然会收到相同的错误信息,只是“错误:超过10000毫秒的超时…”,但谢谢你的想法。你的承诺解决了吗?谢谢兰斯,你帮了我很多忙。我真的很感激。祝你有一个愉快的一天