我有客户端JavaScript,不以任何方式与DOM或网页浏览器交互。我想在Travis-CI中单元测试这段代码的功能(这只是一个奇特的数据库/缓冲区),而无需启动Web浏览器。命令行JavaScript让我觉得我需要node.js。我浏览了各种单元测试库,然后决定使用Mocha的简单性,但是基于node.js的库测试基于浏览器的模块/类似乎过于困难。单元测试网页浏览器无关的JavaScript
具体来说,我要测试的这款(简体)浏览器的JavaScript有效的代码:
// I need this NameSpace to organise my code and isolate from other code
var Nengo = {};
Nengo.DataStore = function(dims) {
this.times = [];
this.data = [];
for (var i=0; i < dims; i++) {
this.data.push([]);
}
}
Nengo.DataStore.prototype.push = function(row) {
this.times.push(row[0]);
for(var i = 0; i < this.data.length; i++){
this.data[i].push(row[i+1]);
}
}
当我尝试在Node.js的测试,我不能正确导入Nengo命名空间的想法。这个测试甚至不能运行:
// get the datastore code from the folder below
require("../simple_data")
var assert = require("assert")
describe("DataStore", function() {
var data_store = new Nengo.DataStore(2);
it("accepts data", function() {
data_store.push([0.0, 1.1, 1.2])
assert.deepEqual(data_store.data, [[1.1], [1.2]])
});
});
它失败,出现以下错误:我曾经想过解决这一被放弃节点和输出测试结果的DOM的
/home/saubin/javascript_test/test/simple_test.js:5
var data_store = new Nengo.DataStore(2);
^
ReferenceError: Nengo is not defined
at Suite.<anonymous> (/home/saubin/javascript_test/test/simple_test.js:5:22)
at context.describe.context.context (/usr/local/lib/node_modules/mocha/lib/interfaces/bdd.js:49:10)
at Object.<anonymous> (/home/saubin/javascript_test/test/simple_test.js:4:1)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at /usr/local/lib/node_modules/mocha/lib/mocha.js:192:27
at Array.forEach (native)
at Mocha.loadFiles (/usr/local/lib/node_modules/mocha/lib/mocha.js:189:14)
at Mocha.run (/usr/local/lib/node_modules/mocha/lib/mocha.js:422:31)
at Object.<anonymous> (/usr/local/lib/node_modules/mocha/bin/_mocha:398:16)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:935:3
的一种方式无头浏览器和获得结果,但这似乎是一个很大的开销。我可以更改我的代码的结构以与Node.js兼容吗?由于缺乏对该领域的了解,是否还有其他解决方案?
Nengo是否作为节点模块存在?你如何加载它? –
它不是一个节点模块,因为它只在客户端浏览器中运行,并且从我所了解的它是一个实际的节点模块,我将不得不在服务器端运行它。我按照上面的代码所示加载它,主要是因为我不知道如何加载它。 – Seanny123
@DaveNewton在我的最后一条评论中忘记提及你 – Seanny123