我已经设置了mocha在终端中运行测试。它适用于基本测试,如expect(1).to.equal(1)
。我碰到的问题是我的脚本被包装在jQuery中,就像jQuery(function($) { // my code here });
一样,并且在运行测试时出现错误。jQuery未定义使用摩卡来测试wordpress javascript
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的方式?
感谢您的建议,但是这似乎没有解决这一问题。仍然得到相同的终端错误。 – BigBadBigBad
我报道的问题肯定是问题的一部分。从可能在这里回答的人那里得到更精确的东西的最好方法是让你的问题变成[mcve]。 – Louis