jQuery没有使用mocha来测试wordpress javascript
jQuery not defined using mocha for testing wordpress javascript
我已经设置了mocha来在终端中运行测试。它适用于像expect(1).to.equal(1)
这样的基本测试。我遇到的问题是,我的脚本像jQuery( function( $ ) { // my code here });
一样封装在jQuery中,并且在运行测试时出错。
evalmachine.<anonymous>:15
jQuery( function ( $ ) {
^
ReferenceError: jQuery is not defined
at evalmachine.<anonymous>:15:1
at Object.exports.runInThisContext (vm.js:54:17)
at Suite.<anonymous> (/Users/grahamlutz/Documents/BBC/poolproof/test/test.js:21:8)
at context.describe.context.context (/usr/local/lib/node_modules/mocha/lib/interfaces/bdd.js:47:10)
at Object.<anonymous> (/Users/grahamlutz/Documents/BBC/poolproof/test/test.js:8:1)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Module.require (module.js:367:17)
at require (internal/module.js:16:19)
at /usr/local/lib/node_modules/mocha/lib/mocha.js:220:27
at Array.forEach (native)
at Mocha.loadFiles (/usr/local/lib/node_modules/mocha/lib/mocha.js:217:14)
at Mocha.run (/usr/local/lib/node_modules/mocha/lib/mocha.js:469:10)
at Object.<anonymous> (/usr/local/lib/node_modules/mocha/bin/_mocha:404:18)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Function.Module.runMain (module.js:447:10)
at startup (node.js:141:18)
at node.js:933:3
我的test.js看起来是这样的:
var assert = require('assert');
var chai = require('chai');
var expect = chai.expect;
var fs = require('fs');
var vm = require('vm');
var jsdom = require('mocha-jsdom');
describe('mocha tests', function () {
jsdom();
before(function () {
$ = require('jquery');
});
var path = __dirname + '/../wp-content/themes/bb-theme-child/myscript.js';
var code = fs.readFileSync(path);
vm.runInThisContext(code);
describe('getSession', function() {
it('should return the empty string because it fails', function () {
applyCoupon();
});
});
});
我的问题是,为什么jQuery没有定义,或者我做出了什么不正确的假设?我需要改变在wordpress设置中测试javascript的方式吗?
下面两行对我很有用。为了方便起见,我只是把它们放在我的mocha测试文件的顶部。根据mocha jsdom github自述文件中的建议,我使用了"jsdom global"包,而不是"mocha jsdom"。https://github.com/rstacruz/jsdom-global
this.jsdom = require('jsdom-global')()
global.$ = global.jQuery = require('jquery');
您必须自己将$
和jQuery
导出到全局空间:
before(function () {
global.$ = global.jQuery = require('jquery');
});
如果你阅读mocha-jsdom
的文档,你会发现它放入了全局空间符号,比如window
和document
。当您加载jquery
时,它会找到window
并将自己添加为window.$
。在浏览器中,此也使$
在全局空间中可见,因为window
是全局空间。然而,在Node中,全局空间是global
,因此您必须自己将$
放入其中。
相关文章:
- 模糊事件的Javascript测试
- 我的单元测试选项是什么
- 测试索引值是否等于某个数字的倍数
- 在localhost Dev Box上测试JSONP请求的最佳方式
- 测试数组中每个项的内容
- 在wordpress一定时间后更改自定义字段
- 测试Angular Service解决错误回调中的promise
- 如何使MailHandler.php在Wordpress中工作
- Wordpress插件根据需要加载js和css
- 无法再创建Wordpress页面
- 使用Jest测试React Native应用程序
- Wordpress中带有JQuery Accordion的未定义匿名函数
- 为函数代码编写测试
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- 如何使用JS/nightwatchjs并行运行多个测试
- 使用量角器的当前url单元测试的getTitle
- 茉莉花宝石-耙茉莉花:ci dons't运行测试
- JavaScript滚动脚本-在测试中激发,而不是在开发站点上
- 注意:wp_enqueue_script调用不正确.在 Wordpress 调试模式下
- jQuery没有使用mocha来测试wordpress javascript