[英]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失败
1)getSession应返回空字符串,因为它失败:
ReferenceError:$未定义
在getSession(evalmachine。:1:34)
在上下文。 (试验/测试account.js:19:24)
我是摩卡n00b,所以我不确定正确的方向去解决这个问题。 我尝试添加
var jqueryLocalPath = 'jquery.min.js';
var jqueryCode = fs.readFileSync(jqueryLocalPath);
vm.runInThisContext(jqueryCode);
在test-account.js
describe
调用之前没有成功。 然后我尝试通过运行来通过Node.js来require
它
npm install jquery
并添加
var $ = require('jquery');
在运行mocha
之前到test-account.js
的顶部。 这也没有用,我得到了同样的错误。 第二种方法的另一个缺点就是运行了我想要测试的jQuery(2.2.0)的新版本(1.11.3)。
我怎样才能使这个测试工作?
我相信答案是使用正确的Node模块进行测试。
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());
});
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.