Ошибка ReferenceError: документ не определен

1

Я пытаюсь интегрировать Mocha в мое приложение, но при получении document is not defined ошибка. Я также пытался интегрировать JSDOM для решения этой проблемы, но не повезло. Возможно, моя реализация неверна. Заранее спасибо!

Примечание. Я тестирую это локально, но позже буду размещать это на Amazon EC2. Будет ли ошибка документа удаляться самостоятельно при размещении в прямом эфире на сервере?

test.js

var test = require('../index.js');
var assert = require('assert');
var jsdom = require('mocha-jsdom');

global.document = jsdom();

describe('Mutliply', function() {
  jsdom();
  it('should equal 9 when multiply is called', function() {
    assert.equal(9, test.multiply());
  });
});

index.js

'use strict';

let test = {};

let movieList = document.getElementById('movie-list');
//bunch of code

test.multiply = function() {
  return 3*3;
}

module.exports = test;
Теги:
mocha
jsdom

1 ответ

1
Лучший ответ

Проблема в том, что вам require код, который использует document в глобальной области, прежде чем объявлять документ.

var assert = require('assert');
var jsdom = require('mocha-jsdom');

global.document = jsdom();

var test = require('../index.js');

describe('Mutliply', function() { ...

должен работать, или даже

var assert = require('assert');
var jsdom = require('mocha-jsdom');

global.document = jsdom();

describe('Mutliply', function() {
  var test = require('../index.js');  // late import
  it('should equal 9 when multiply is called', function() {
    assert.equal(9, test.multiply());
  });
});
  • 0
    Позже его импорт решил, что документ является неопределенной проблемой, но теперь я получаю TypeError: Cannot read property 'getElementById' of undefined . Похоже, документ еще не определен.
  • 1
    Что ж, в readme для mocha-jsdom написано, что он устарел - может быть, попробуйте github.com/rstacruz/jsdom-global, который там связан?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню