Как использовать jsdom.jQueryify с жасминовым узлом?

Можно ли использовать jasmine-node с функцией jQueryify jsdom? Я пытаюсь использовать NodeJS для тестирования некоторого JavaScript, который зависит от наличия DOM.

Вот уменьшенный случай того, что я пробовал. Когда я запускаю скрипт, jasmine-node распознает спецификацию, но не запускает expect():

var fs = require('fs'),
    jsdom = require('jsdom'),
    window = jsdom.createWindow(),
    jasmine = require('jasmine-node')

describe("jQueryify", function() {
    it('should run the test!', function () {
        jsdom.jQueryify(window, function (window, jquery) {
            expect(1).toEqual(1)
        })
    })
})

В качестве альтернативы, есть ли другой/лучший способ тестирования в NodeJS, который предполагает среду, подобную браузеру?


person Andrew Hedges    schedule 02.06.2011    source источник


Ответы (1)


ОК, на основе одного этого ответа на частично связанный вопрос, я смог заставить expect() выполниться. Я предполагаю, что ответ на мой вопрос заключается не в том, чтобы использовать встроенную функцию jQueryify, а в том, чтобы использовать jQuery «вручную».

var fs = require('fs'),
    window = require('jsdom').jsdom('<html><head></head><body></body></html>').createWindow(),
    script = window.document.createElement('script'),
    jasmine = require('jasmine-node')

describe("jQueryify", function() {
    it('should run the test!', function () {
        script.src = './path/to/jquery.js'
        script.onload = function () {
            expect(typeof window.$).toEqual('function')
            asyncSpecDone()
        }
        window.document.head.appendChild(script)
        asyncSpecWait()
    })
})
person Andrew Hedges    schedule 02.06.2011