以下测试不适用于mocha-chai,它能够获取输入请求但会抛出错误消息 .
it('/hb : ', function (done) {
return chai.request(app)
.post('/hb')
.send({"a":1 })
.then(function (res) {
expect(err).to.be.null;
expect(res).to.have.status(200);
// { ah: { rt: [Object] }, ad: { mojo: 1 } } }
//console.log("CAlling DOne ........... +");
done();
}, function (err) {
//console.log(err);
throw err;
});
});
输出:
Web请求:/ hb ::错误:超出2000ms的超时 . 确保在此测试中调用done()回调 .
2 回答
chai-http
添加到chai
的函数返回promise . 在您的代码中,您将返回承诺,这很好 . 但是,您还要声明测试以获取参数:function (done)
. 如果您没有返回承诺,这将没有问题,但返回承诺确实是更好的机制 . 当您声明测试采用参数时,Mocha会忽略测试的返回值,因此会忽略promise . 所以只需删除你对done
的使用 .这是一个示例,它再现了原始代码中的错误,并且在传递给
then
的函数中未定义err
.如果服务器返回200状态,那么您将在控制台上获得此状态:
如果服务器返回400状态,则输出为:
你需要添加以下内容:
你可以在Post request via Chai上提到这个问题