使用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在命令行上testing它。 为此我有另一个文件:
testingaccount.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应该返回空string,因为它失败了:
ReferenceError:$没有定义
在getSession(evalmachine.:1:34)
在上下文。 (试验/testingaccount.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),我想testing一个(1.11.3)。
我怎样才能使这个testing工作?
我相信答案是使用正确的节点模块进行testing。
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()); }); }); });
- 在Mocha使用node.js执行REST调用
- 使用摩卡和supertest不能testingDELETE方法
- Node.js + mocha + webdriverjs:失败的testingkill套件
- 从来没有写过任何自动化testing,我应该如何开始行为驱动开发?
- 摩卡istanbul不包括一个文件
- 如何使用express,sequelize,mocha和supertests进行回滚unit testing
- Locomotive.js在调用“locomotive.boot”时抛出错误
- node.js如何获得更好的使用摩卡asynchronoustesting的错误消息
- nodejs / mocha / nock – 模拟整个html响应