1
我有一個令人沮喪的問題。 我正在嘗試提取許多類中使用的函數。 這樣做會給我帶來'完成'回調的問題。 這裏是我的代碼:異步回調不會被調用
我已經提取的功能,並把它添加到util.js中:
var chai = require('chai');
var expect = chai.expect;
var util = exports = module.exports = {};
chai.use(require('chai-http'));
chai.use(require('chai-string'));
util.testAsyncCalls = function testAsyncCalls(urlArray, urlSuffix, result, callback) {
async.each(urlArray, function (url, callback) {
chai.request(url)
.get(urlSuffix)
.then(function (res) {
expect(res).to.have.status(200);
expect(res.body.totalStatus, res.body.summary).to.equalIgnoreCase(result);
callback();
})
.catch(function (err) {
callback(err);
});
});
};
然後,在測試本身,我調用該函數類似下面:
var config = require(process.env.CONFIG || '../env.json'),
util = require('../util.js');
describe('App', function() {
it('Is /home ok ?', function(done) {
util.testAsyncCalls(config.url.applications, '/home/info', 'SUCCESS', done);
})
});
通過摩卡運行測試給我以下錯誤:
Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.
當我PE對正常的url進行修改,我得到一個有效的回覆,所以我認爲回調是問題所在。 任何人都可以幫忙嗎?
在此先感謝。 問候
它的工作原理,非常感謝。我很困惑,因爲我認爲superMethod從.then()或.catch()方法收到回調。不知道它們必須在每個之後被調用。 – Homewrecker