Я настраиваю модульные тесты ES6 в своем проекте, и у меня возникают проблемы с их работой с библиотеками. Я думал, что буду использовать jQuery как тест, чтобы попытаться заставить его работать. Без библиотек тесты работают.
Обратите внимание, что jQuery импортируется в мой файл main.js, поэтому он доступен во всем проекте.
Мой файл JS выглядит следующим образом:
class Test {
constructor(options) {
this.init();
}
init() {
$('.test-div').addClass('test');
}
sayHello() {
return 'hello world!';
}
}
export default Test;
А тест выглядит следующим образом:
import jsdom from 'mocha-jsdom';
import chai from 'chai';
import Test from './test';
chai.should();
describe('Frequency',() => {
var $;
jsdom();
before(() => {
$ = require('jquery');
})
it('should output hello world',() => {
const test = new Test();
test.sayHello().should.equal('hello world!');
});
});
Если удалить функцию init()
, тест работает. Однако функция before не импортирует jQuery для теста. Ошибка я получаю в консоли выглядит следующим образом:
ReferenceError: $ is not defined
at Frequency.init
Вы уверены, что '$' определен для файла, который экспортирует 'Test'? Обратите внимание, что ваша спецификация не требует 'main.js', она требует только'./Test', поэтому ваш файл './Test' также должен импортировать jquery, то есть' import $ from 'jquery'' в './Test' –
Thanks для ответа @MauricioPoppe - я импортировал 'main.js', и теперь он жалуется на такие вещи, как picturefill, а затем окно не определяется. Должен ли я прикрепить к нему файл jspm.config? – 30secondstosam