javascript - 在异步 Mocha 测试中配置 JSDom

标签 javascript node.js mocha.js ecmascript-6 jsdom

我正在尝试将依赖项加载到 JSDom 环境中,然后执行基本测试。

当我使用 mocha 运行此文件时,它告诉我已超出最大超时 2000 毫秒。

// Node Dependencies
import { readFileSync } from 'fs';

// NPM Dependencies
import { expect } from 'expect';
import { jsdom } from 'jsdom';

// JSDom Configuration
const html    = '<!doctype html><html><body></body></html>';
const dep1    = readFileSync("./dep1.js", "utf-8");
const dep2    = readFileSync("./dep2.js", "utf-8");
const scripts = [ dep1, dep2 ];

describe('App Actions', function(){
  it('sample test', function(done){

    // Use JSDom to mock a browser environment,
    // loading the necessary scripts, then executing the callback.
    jsdom(html, scripts, callback);

    function callback(err, window){
      expect(false).toEqual(true);
      done();
    }

  });
});

有什么想法吗?

我认为这与 jsdom 有关,因为如果我将回调更改为如下所示:

function callback(err, window){
  console.log(window);
  expect(false).toEqual(true);
  done();
}

它从不运行console.log

最佳答案

您正在导入 jsdom.jsdom,但使用 jsdom.env 的语法(它确实需要回调作为第三个参数)。更改此行:

import { jsdom } from 'jsdom';

致:

import { env } from 'jsdom';

关于javascript - 在异步 Mocha 测试中配置 JSDom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34802512/

相关文章:

Javascript反转数字数组并减2,然后减1,然后减0,然后加1,加2等等

javascript - 优化node.js中显示mysql查询结果的效率

javascript - 我如何告诉 Mocha 只在浏览器中运行某个测试(而不是在 node.js 中)?

node.js - Node.js 中的响应顺序?

ldapjs 创建模拟用户并执行搜索

javascript - 使用 TypeScript 和 Chai 的强类型深度相等断言

javascript - 如何混合运行 ruby​​ 和 javascript?

javascript - 正则表达式解析多个单独的单词并忽略双引号

javascript - 显示包含特定字符串的 div

javascript - Node.js:与速度较慢的第三方合作