如何使用茉莉花和节点从命令行testingjQuery插件?

我有我正在testing的jQuery插件。 我发现这个问题: 如何从命令行上运行JasminetestingNode.js? 但是当我运行:

node_modules/jasmine-node/bin/jasmine-node --verbose --junitreport --noColor spec 

我得到错误,没有定义$。 我如何包含jQuery? (现在我只testing不与dom交互的实用程序)。

首先需要创build一个jQuery可以完成的DOM。 您应该将其设置为全局variables,因为您可能正在访问窗口元素上的jQuery(或$)。

首先,将jquery和jsdom添加到你的package.json文件中,例如:

  "dependencies": { "jquery": "*" }, "devDependencies": { "jsdom": "*" } 

运行npm install来安装刚刚添加的新依赖项。

然后,在你的spec文件的顶部,做这样的事情:

 var jsdom = require("jsdom").jsdom; global.window = jsdom().parentWindow; global.jQuery = global.$ = require("jquery")(window); 

这使用jsdom创build一个窗口元素,并让jquery知道该怎么做。 你现在应该可以在你的规范中同时访问jQuery$

通过尝试和错误,我想出了jasmine-node spec文件中的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和node v4.2.4。 我得到它与以下代码一起工作:

 var jsdom = require("jsdom").jsdom; global.window = jsdom().defaultView; global.jQuery = global.$ = require("jquery"); var myModuleThatReliesOnJquery = require("./myModuleThatReliesOnJquery.js"); 

我也有一些困难得到这个工作。 我发现的作品(进入jsdom github页面: https : //github.com/tmpvar/jsdom )是做以下事情。

安装以下两个软件包(按照Farid的build议):

 npm install jquery --save npm install jsdom --save-dev 

然后在spec(testing)文件的顶部键入以下内容:

 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; 

现在您已经在全局设置了$windowdocument 。 这是我第一次使用JavaScript,所以如果我做错了,请让我知道!

PS有一个简单的方法来运行你的testing使用npm(我从这里学到了: https : //www.keithcirkel.co.uk/how-to-use-npm-as-a-build-tool/ )。 在你的package.json文件里添加一个“脚本”部分,例如

 { "dependencies": { "jquery": "^3.2.1" }, "devDependencies": { "jasmine-node": "^1.14.5", "jsdom": "^10.1.0" }, "scripts": { "test": "jasmine-node --verbose --color spec/*" } } 

现在只需input以下内容即可运行testing:

 npm run test 

或者简称npm test