错误 运行 命令行摩卡使用 jQuery
Error running command line Mocha using jQuery
所以我有一个在文件
中使用jQuery的函数
account.js:
function getSession() {
var session = null;
$.ajax({
url: "/ajax/get_session",
async: false
}).done(function(data, textStatus, jqXHR){
session = data;
});
return session;
}
并且我想使用 Mocha 在命令行上对其进行测试。为此,我有另一个文件:
测试-account.js:
var assert = require('assert');
var fs = require('fs');
var vm = require('vm');
// includes minified & uglified version, assuming mocha is run in repo root dir
var path = '../public/js/account.min.js';
var code = fs.readFileSync(path);
vm.runInThisContext(code);
describe('getSession', function() {
it('should return the empty string because it fails', function () {
assert.equal('', getSession());
});
});
但是当我在命令行上 运行 mocha
时出现错误
1 failing
1) getSession should return the empty string because it fails:
ReferenceError: $ is not defined
at getSession (evalmachine.:1:34)
at Context. (test/test-account.js:19:24)
我是 Mocha n00b,所以我不确定解决这个问题的正确方向。我尝试添加
var jqueryLocalPath = 'jquery.min.js';
var jqueryCode = fs.readFileSync(jqueryLocalPath);
vm.runInThisContext(jqueryCode);
在 describe
调用 test-account.js
之前没有成功。然后我尝试 require
通过 Node.js by 运行ning
npm install jquery
并添加
var $ = require('jquery');
在 运行 宁 mocha
之前到 test-account.js
的顶部。这也没有用,我得到了同样的错误。第二种方法的缺点是 运行 更新了 jQuery (2.2.0) 版本,我想在 (1.11.3) 上测试。
我怎样才能让这个测试起作用?
我相信答案是使用correct Node modules,进行测试。
var assert = require('assert');
var fs = require('fs');
var vm = require('vm');
var jsdom = require('mocha-jsdom'); // This is necessary for testing jQuery in Mocha
describe('mocha tests', function () {
jsdom()
before(function () {
$ = require('jquery')
});
// includes minified & uglified version, assuming mocha is run in repo root dir
var path = 'account.js';
var code = fs.readFileSync(path);
vm.runInThisContext(code);
describe('getSession', function() {
it('should return the empty string because it fails', function () {
assert.equal('', getSession());
});
});
});
所以我有一个在文件
中使用jQuery的函数account.js:
function getSession() {
var session = null;
$.ajax({
url: "/ajax/get_session",
async: false
}).done(function(data, textStatus, jqXHR){
session = data;
});
return session;
}
并且我想使用 Mocha 在命令行上对其进行测试。为此,我有另一个文件:
测试-account.js:
var assert = require('assert');
var fs = require('fs');
var vm = require('vm');
// includes minified & uglified version, assuming mocha is run in repo root dir
var path = '../public/js/account.min.js';
var code = fs.readFileSync(path);
vm.runInThisContext(code);
describe('getSession', function() {
it('should return the empty string because it fails', function () {
assert.equal('', getSession());
});
});
但是当我在命令行上 运行 mocha
时出现错误
1 failing
1) getSession should return the empty string because it fails:
ReferenceError: $ is not defined
at getSession (evalmachine.:1:34)
at Context. (test/test-account.js:19:24)
我是 Mocha n00b,所以我不确定解决这个问题的正确方向。我尝试添加
var jqueryLocalPath = 'jquery.min.js';
var jqueryCode = fs.readFileSync(jqueryLocalPath);
vm.runInThisContext(jqueryCode);
在 describe
调用 test-account.js
之前没有成功。然后我尝试 require
通过 Node.js by 运行ning
npm install jquery
并添加
var $ = require('jquery');
在 运行 宁 mocha
之前到 test-account.js
的顶部。这也没有用,我得到了同样的错误。第二种方法的缺点是 运行 更新了 jQuery (2.2.0) 版本,我想在 (1.11.3) 上测试。
我怎样才能让这个测试起作用?
我相信答案是使用correct Node modules,进行测试。
var assert = require('assert');
var fs = require('fs');
var vm = require('vm');
var jsdom = require('mocha-jsdom'); // This is necessary for testing jQuery in Mocha
describe('mocha tests', function () {
jsdom()
before(function () {
$ = require('jquery')
});
// includes minified & uglified version, assuming mocha is run in repo root dir
var path = 'account.js';
var code = fs.readFileSync(path);
vm.runInThisContext(code);
describe('getSession', function() {
it('should return the empty string because it fails', function () {
assert.equal('', getSession());
});
});
});