Javascript 如何使用jasmine和node从命令行测试jQuery插件?
我有我正在测试的jQuery插件。我发现了这个问题:但当我跑步时:Javascript 如何使用jasmine和node从命令行测试jQuery插件?,javascript,jquery,node.js,jasmine,Javascript,Jquery,Node.js,Jasmine,我有我正在测试的jQuery插件。我发现了这个问题:但当我跑步时: node_modules/jasmine-node/bin/jasmine-node --verbose --junitreport --noColor spec 我得到了未定义$的错误。如何包含jQuery?(现在我只测试不与dom交互的实用程序)。您首先需要创建一个dom,jQuery可以在其上执行操作。 您应该将其设置为一个全局变量,因为您可能正在访问window元素上的jQuery(或$) 首先,将jquery和jsd
node_modules/jasmine-node/bin/jasmine-node --verbose --junitreport --noColor spec
我得到了未定义$的错误。如何包含jQuery?(现在我只测试不与dom交互的实用程序)。您首先需要创建一个dom,jQuery可以在其上执行操作。 您应该将其设置为一个全局变量,因为您可能正在访问window元素上的jQuery(或$) 首先,将jquery和jsdom添加到package.json文件中,例如:
"dependencies": {
"jquery": "*"
},
"devDependencies": {
"jsdom": "*"
}
运行npm install
安装您刚才添加的新依赖项
然后,在等级库文件的顶部执行以下操作:
var jsdom = require("jsdom").jsdom;
global.window = jsdom().parentWindow;
global.jQuery = global.$ = require("jquery")(window);
这将使用jsdom创建一个窗口元素,并让jquery知道要执行的操作。您现在应该能够访问规范中的
jQuery
和$
通过反复尝试,我在jasmine节点规范文件中找到了使用jQuery和jsdom的代码:
if (typeof window === 'undefined') {
var jsdom = require("jsdom");
global.document = jsdom.jsdom();
global.window = global.document.parentWindow;
var navigator = {userAgent: "node-js", platform: "Linux i686"};
global.window.navigator = global.navigator = navigator;
navigator.platform = "Linux i686";
global.jQuery = global.$ = require("jquery");
}
使用jsdom v7.2.2和节点v4.2.4。我让它与以下代码一起工作:
var jsdom = require("jsdom").jsdom;
global.window = jsdom().defaultView;
global.jQuery = global.$ = require("jquery");
var myModuleThatReliesOnJquery = require("./myModuleThatReliesOnJquery.js");
我也很难让它工作。我发现(通过转到jsdomgithub页面:)可以做到以下几点 安装以下两个软件包(按照Farid的建议): 然后在等级库(测试)文件的顶部键入以下内容:
const jsdom = require("jsdom");
const { JSDOM } = jsdom;
const { window } = new JSDOM(`<!DOCTYPE html>`);
global.jQuery = global.$ = require("jquery")(window);
global.window = window;
global.document = window.window;
现在,您只需键入以下内容即可运行测试:
npm run test
或者干脆
npm测试
。您找到解决此问题的方法了吗?不确定这是否是推荐的解决方案,但您可以将jquery的一个版本添加到同一个spec文件夹中,该文件需要以helper.js
结尾。例如jquery-helper.js-此文件将在测试运行之前加载。这不起作用,我没有获得jquery函数,但jquery和$是对象,没有$.fn。
{
"dependencies": {
"jquery": "^3.2.1"
},
"devDependencies": {
"jasmine-node": "^1.14.5",
"jsdom": "^10.1.0"
},
"scripts": {
"test": "jasmine-node --verbose --color spec/*"
}
}
npm run test