首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Node.js/Javascript:失败的mocha测试在测试XML到JSON解析时超时

Node.js/Javascript:失败的mocha测试在测试XML到JSON解析时超时
EN

Stack Overflow用户
提问于 2016-10-12 07:39:25
回答 1查看 438关注 0票数 0

有谁能帮我弄清楚为什么我在设定超时值为15000毫秒后仍未通过摩卡测试。我知道这可能是内存泄漏等等,但我在代码中任何地方都找不到它。我使用了chrome调试器,并检查JS在最大值时是否使用了48 max内存。(哪个不算太糟?)这是我正在测试的函数,它在一个名为xmlParser.js的文件中

代码语言:javascript
复制
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。就这么简单!我就是这样测试的,

代码语言:javascript
复制
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语句之前,是的,我没有。但无论如何都会过去的,对吧?它没有通过,它会在1500年代后得到一个超时错误

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-12 08:04:00

你为什么不试着把setTimout降到14秒呢?

代码语言:javascript
复制
setTimeout(function () {
    done()
}, 140000);

在javascript中,计时器不太精确。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39993061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档