簡體   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