[英]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.