有人可以帮我弄清楚为什么我在将超时设置为 15000 毫秒后仍无法通过 Mocha 测试吗?我知道这可能是内存泄漏等,但我在代码中找不到它。我使用chrome调试器并检查JS堆最大使用48MB内存。 (这还不错?)这是我正在测试的函数,它位于一个名为 xmlParser.js
var fs = require('fs'),
xml2js = require('xml2js'),
parser = new xml2js.Parser();
/**
* [parse - parses a xml file to json]
* @param {[string]} filename [name of the file to parse]
* @param {Function} callback [callback function]
* @return {[Function]} [returning callback function]
*/
function parse(filename, callback){
fs.readFile(filename, function(err, data){
if(err){
console.log('cannot read file.');
return callback(err);
} else {
parser.parseString(data, function(err, result){
if(err) {
console.log('cannot parse file.');
return callback(err);
}
else {
return callback(null, result);
}
});
}
});
}
module.exports = {
parse
}
它有什么作用?将 xml 文件解析为 JSON。就如此容易! 这是我测试的方法,
var assert = require('chai').assert,
mocha = require('mocha'),
xmlParser = require('../utils/xmlParser.js'),
extractInformation = require('../utils/extractInformation.js');
//data-structures for parsed XML data (lists)
var logJSON = [], listJSON = [];
describe('parse xml files', function(){
this.timeout(150000);
it('should parse correctly', function(done){
this.timeout(150000);
setTimeout(done, 150000);
xmlParser.parse(__dirname + "/../xml/svn_log_test.xml", function(err, log) {
if(err) {
return done(err);
// assert.equal(true, false);
}
this.logJSON = log["log"]["logentry"];
xmlParser.parse(__dirname + "/../xml/svn_list_test.xml", function(err, list) {
if(err) {
return done(err);
// assert.equal(true, false);
}
this.listJSON = list["lists"]["list"][0]["entry"];
});
});
});
});
现在,在你说我现在没有使用任何断言语句之前,是的,我没有。但无论如何都应该过去,对吧?没有通过,15000s后出现超时错误
最佳答案
为什么不尝试将 setTimout 减少到 14 秒?
setTimeout(function () {
done()
}, 140000);
JavaScript 中的计时器不太精确
关于javascript - Node.js/Javascript : Failing mocha test with timeout on testing parsing XML to JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39993061/