开发者

How to use jsdom.jQueryify with jasmine-node?

开发者 https://www.devze.com 2023-03-09 22:29 出处:网络
Is it possible to user jasmine-node with the jQueryify feature of jsdom? What I\'m trying to do is use NodeJS to test some JavaScript that depends on the presence of the DOM.

Is it possible to user jasmine-node with the jQueryify feature of jsdom? What I'm trying to do is use NodeJS to test some JavaScript that depends on the presence of the DOM.

Here is a reduced case of what I tried. When I run the script, jasmine-node recognizes the spec, but doesn't run the 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)
  开发者_StackOverflow社区      })
    })
})

Alternately, is there a different/better way to test stuff in NodeJS that assumes a browser-like environment?


OK, based on one this answer to a semi-related question, I was able to get the expect() to execute. I guess the answer to my question is not to use the built-in jQueryify function, but to pull in jQuery 'manually'.

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()
    })
})
0

精彩评论

暂无评论...
验证码 换一张
取 消