当我运行函数时,它给我错误:Resolution method is overspecified. Specify a callback *or* return a Promise; not both.
任何人都可以检查我的代码,并帮助解决此问题吗?在这里,我已经放置了完整的代码
it('Get Organizations', async function (done) {
let user_permission = await commonService.getuserPermission(logged_in_user_id,'organizations','findAll');
let api_status = 404;
if(user_permission) {
api_status = 200;
}
let current_token = currentResponse['token'];
old_unique_token = current_token;
chai.request(app)
.post('entities')
.set('Content-Type', 'application/json')
.set('vrc-access-token', current_token)
.send({ "key": "organizations", "operation": "findAll" })
.end(function (err, res) {
currentResponse = res.body;
expect(err).to.be.null;
expect(res).to.have.status(api_status);
done();
});
});
答案 0 :(得分:0)
这是摩卡咖啡的“问题”。从您的代码中删除done()
。在chai.request
中使用Promises时,这是多余的。
您返回的是Promise,因此通话完成是多余的,因为它在 错误消息
在较旧的版本中,必须在异步方法的情况下使用回调 这样
it ('returns async', function(done) { callAsync()
.then(function(result) {
assert.ok(result);
done(); }); })
现在,您可以选择返回诺言
it ('returns async', function() { return new Promise(function
(resolve) {
callAsync()
.then(function(result) {
assert.ok(result);
resolve();
}); }); })
发件人:this stack
答案 1 :(得分:0)
在定义done
单元测试函数时不要使用async
,而应像在await
处理来自{{1}的请求之后,从异步方法中正常返回一样}:
chai-http
测试运行程序将自动it('Get Organizations', async function () {
let user_permission = await commonService.getuserPermission(logged_in_user_id,'organizations','findAll');
let api_status = 404;
if(user_permission) {
api_status = 200;
}
let current_token = currentResponse['token'];
old_unique_token = current_token;
await chai.request(app) // note 'await' here
.post('entities')
.set('Content-Type', 'application/json')
.set('vrc-access-token', current_token)
.send({ "key": "organizations", "operation": "findAll" })
.then(function (err, res) { // not 'then', not 'end'
currentResponse = res.body;
expect(err).to.be.null;
expect(res).to.have.status(api_status);
});
});
进行您的功能。