繁体   English   中英

JSDOM功能未完成

[英]JSDOM function does not finish

请帮助我了解这里有什么问题:

这是我的js代码(经过简化以隔离演示问题所需的最少代码):

'use strict';
var jsdom = require('jsdom');
describe('desc', function () {
    it('should', function () {
        function uploadURL(callback) {
            jsdom.env({
                url: "http://digg.com",
                done: function (errors, window) {
                    console.log("inside");
                    callback("abc");
                }
            });
        }

        uploadURL(function(x){
            console.log("returned " + x);
        });
    });
});

这是我的命令行:

node_modules / mocha / bin / mocha测试/test.js

当我运行上面的脚本时,得到以下输出:

  desc
    ✓ should (196ms)
  1 passing (204ms)

一旦删除jsdom部分并仅运行包含console.log和callback的uploadURL()部分,我将得到以下信息:

desc
inside
returned abc
    ✓ should
  1 passing (5ms)

似乎在脚本结束之前未执行jsdom部分。 为什么会这样,如何解决呢?

谢谢!

因为它是异步的。 为了测试与摩卡异步函数,你接受回调摩卡的it提供,并把它当异步完成:

'use strict';
var jsdom = require('jsdom');
describe('desc', function () {
    it('should', function (done) {
    //                     ^---------------------- accept the callback
        function uploadURL(callback) {
            jsdom.env({
                url: "http://digg.com",
                done: function (errors, window) {
                    console.log("inside");
                    callback("abc");
                }
            });
        }

        uploadURL(function(x){
            console.log("returned " + x);
            done();                            // <=== Call it
        });
    });
});

此处的Mocha文档中对此进行了介绍。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM