[英]Node.js/Javascript: Failing mocha test with timeout on testing parsing XML to JSON
有人可以幫我弄清楚為什么即使將超時設置為15000ms,也無法通過Mocha測試。 我知道這可能是內存泄漏等,但是我在代碼中的任何地方都找不到它。 我使用了chrome調試器,並檢查了JS Heap最多使用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"];
});
});
});
});
現在,在您說到目前為止我還沒有使用任何assert語句之前,是的,我沒有。 但是無論如何它應該通過,對不對? 它沒有通過,在15000s之后收到超時錯誤
為什么不嘗試將setTimout減少到14秒?
setTimeout(function () {
done()
}, 140000);
計時器在javascript中不太精確
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.