簡體   English   中英

使用Mocha設置JSDOM

[英]Setting up JSDOM with Mocha

我正在嘗試使用sinon的mock和spy來測試Redux組件和異步操作,但是只要我將sinon導入任何測試文件,運行以下npm腳本:

mocha --require test / helpers / browser.js --compilers。:babel-core / register --opts test / client / ** / *。{js,jsx} --recursive test / client

我收到以下錯誤:

var div = typeof document !== "undefined" && document.createElement("div");
                                                      ^

TypeError:document.createElement不是... / node_modules / sinon / lib / sinon / util / core / deep-equal.js中的函數:3:55

browser.js是我設置JSDOM的地方:

import { JSDOM } from 'jsdom';

const doc = new JSDOM('<!DOCTYPE html><html><head></head><body></body></html>');
cost win = doc.defaultView; // tried doc.window;

global.document = doc;
global.window = win;

/*
Object.keys(win).forEach(property => {
  if (typeof global[property] === 'undefined') {
    global[property] = win[property];
  }
});
*/

global.navigator = {
  userAgent: 'node.js'
};

我想我沒有正確設置jsdom? 我試着環顧四周,在上面的browser.js文件中找到了注釋代碼,但是在取消注釋時會產生錯誤:

Object.keys(win).forEach(function (property) {
       ^

TypeError:無法將undefined或null轉換為object。

documentwindow的屬性,而不是相反:

const dom = new JSDOM('<!DOCTYPE html><html><head></head><body></body></html>');

global.window = dom.window;
global.document = dom.window.document;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM