如何将jsdom.jQueryify与jasmine节点一起使用

How to use jsdom.jQueryify with jasmine-node?

本文关键字:节点 一起 jasmine jsdom jQueryify      更新时间:2023-09-26

是否可以使用jsdom的jQueryify功能来使用jasmine节点?我想做的是使用NodeJS测试一些依赖于DOM存在的JavaScript。

这是我尝试的一个简化案例。当我运行脚本时,jasmine节点识别规范,但不运行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中假设类似浏览器的环境的东西?

好吧,基于一个半相关问题的答案,我能够执行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()
    })
})