Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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
Node.js 如何在chai测试中使用async/await?_Node.js_Chai_Chai Http - Fatal编程技术网

Node.js 如何在chai测试中使用async/await?

Node.js 如何在chai测试中使用async/await?,node.js,chai,chai-http,Node.js,Chai,Chai Http,我有一个chai测试,它不使用async/await语法,但会崩溃。如何修复它 错误是: 错误[ERR\u SERVER\u ready\u LISTEN]:在未关闭的情况下多次调用了LISTEN方法。 代码:“ERR\u SERVER\u已经\u LISTEN” 下面是使用工作经典语法和非工作异步/等待语法的相同测试: chai.use(柴胡汤); const api=chai.request(server.keepOpen(); //async/await=>不起作用 描述(“GET/us

我有一个chai测试,它不使用async/await语法,但会崩溃。如何修复它

错误是:

错误[ERR\u SERVER\u ready\u LISTEN]:在未关闭的情况下多次调用了LISTEN方法。 代码:“ERR\u SERVER\u已经\u LISTEN”

下面是使用工作经典语法和非工作异步/等待语法的相同测试:

chai.use(柴胡汤);
const api=chai.request(server.keepOpen();
//async/await=>不起作用
描述(“GET/user/:id”,()=>{
它(“返回用户信息”,异步(完成)=>{
const res=等待api
.get(“/user/123”)
.set(“Cookie”,“_id=567;locale=en”);
柴.期望(地位)等于(200);
完成();
});
});
//经典语法=>有效
描述(“GET/user/:id”,()=>{
它(“返回用户信息”,()=>{
应用程序编程接口
.get(“/user/123”)
.set(“Cookie”,“_id=567;locale=en”)
.end(函数(err、res){
柴.期望(res.to.have.status)(200);
});
});

});问题似乎与语法无关。不知何故,
hai http
尝试两次启动服务器,因此您会得到“ERR\u server\u ready\u LISTEN”或者您已经在某个地方运行了服务器。经典语法“passs”,因为您不使用
done()
,而应该使用它。真正发生的情况是,经典测试触发一个请求,但不等待它完成,因此没有断言,因此没有断言不失败。是的,如果我在测试结束时添加done(),后者也会崩溃,出现
ERR\u SERVER\u ready\u LISTEN
错误。否,服务器尚未侦听。我刚进入“纱线测试”,如果没有看到代码的其余部分,很难说出更多。不知怎的,
server.listen()
被调用了几次。显示服务器的代码