2015-05-14 4 views
1

С IO.js 1.3.0 с помощью JSDOM 4.0.1 с мокко 2.0.1 и JQuery 2.1.1 на Windows,JQuery через JSDom не функтор давая TypeError

следующий код:

var chai = require('chai'); 
var jsdom = require('jsdom'); 

describe('JSDOM', function() { 
var $; 

beforeEach(function() { 
    global.document = jsdom.jsdom('<html><body><section id="banner"></section></body></html>'); 
    global.window = global.document.defaultView; 
    global.navigator = global.window.navigator; 

    $ = global.jQuery = require('jquery')(global.window); 
}) 

it('Using jquery', function() { 
    var dom = $("#banner"); 
}); 
}); 

ошибки с TypeError: объект не является функцией при попытке использовать селектор JQuery как функтор (например, $ (...)). Кто-нибудь еще сталкивается с этим и имеет обходное решение?

+0

До тех пор, пока я не найду основную причину того, почему jquery не инициализируется должным образом (как необходимый модуль), я потянул его в качестве источника (то есть через ** fs **) и вместо этого использовал ** jsdom.env ** (т.е. jsdom.env ({html: , src: [jquery], done: function (erros, window) {// здесь инициализируйте мой тестовый пример, затем done();}};) –

ответ

3

Проблема в том, что вы устанавливаете набор global.window и global.document. jQuery проверяет, есть ли у него браузер в браузере.

Это вызывает require('jquery')(global.window), чтобы обернуть окно вместо запуска функции фабрики jquery, как и $(window).

+0

Спасибо @JoWie, забрали * * global.window ** аргумент для требования jquery и он работает. –

 Смежные вопросы

  • Нет связанных вопросов^_^