javascript - Node.js/Javascript : Failing mocha test with timeout on testing parsing XML to JSON

标签 javascript node.js unit-testing mocha.js

有人可以帮我弄清楚为什么我在将超时设置为 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/

相关文章:

node.js - NightWatch JS 测试脚本中的条件测试

javascript - QUnit:函数 "is not defined"

android - Roboguice 在 JUnit 测试中不工作

javascript - 选中的单选按钮显示一个 div

javascript - 查找 td 索引并将颜色应用于 tr

javascript - npm start 和 install 不起作用

javascript - 如何更好的改变固定元素的位置

javascript - 在 mac 上使用 cython 和 emscripten 将简单的 python 程序编译为 javascript

javascript - Mongodb 显示每个条目的不同条目数

spring-boot - 我使用@Sql进行Spring Test时发生FileNotFoundException