如何使用磁带和测试设置 JavaScript github 测试工具



我在github上有一个(JavaScript)存储库,我想为它设置一个测试工具。

似乎' tape '和' testling '应该做我想要的(带有漂亮github徽章的最小轻量级解决方案),除非有人有替代解决方案,但我正在努力如何设置东西。

我从来没有使用过node.js,似乎磁带和测试(以及所有相关的例子)都集中在node.js上。

谁能建议一个简单的客户端JavaScript库测试工具的最小配置?我猜(?)我需要nodejs, npm, package。在本地运行tape/testling,但我不清楚如何将我的(非节点)JavaScript合并到测试工具中。

我现在看到的是:

myobj.js:

var MyObj = {};
MyObj.a = function() { return 'a'; }
MyObj.b = function() { return 'b'; }

myobj-sub.js:

MyObj.Sub = {};
MyObj.Sub.x = function() { return 'x'; }
MyObj.Sub.y = function() { return 'y'; }

这些当然是通过

拉入HTML的
<script src="myobj.js"></script>
<script src="myobj-sub.js"></script>

对于测试线束,我想我需要这样的东西:

var test = require('tape');
test('myobj', function(assert) {
    assert.equal('a', MyObj.a(), 'test a');
    assert.equal('x', MyObj.Sub.x(), 'test x');
    assert.end();
});

但我不知道该在哪里填补空白!

(ps:我在Linux上运行,如果它有任何区别的话)。

Thx .

你的问题没有太多的空白。你需要做的:

  1. Install Node.js(这也将安装npm命令行工具)。这里的方法是特定于发行版的,在基于debian的Linux发行版上你会这样做:<>之前安装nodejs
  2. 设置项目的目录结构:<>之前myproject的/| - package.json| - myobj.js| - myobj-sub.js| - - - - - -测试/| - myobj.js之前您可以在package.json中指定许多不同的参数,但唯一重要的部分是devDependencies,以确保安装测试线束:<>之前{"名称":"myproj","版本":"1.0.0","description": "只是一些测试项目"," devDependencies ": {"tape": "~2.13.3"},"脚本":{"test": "node test/*.js"}}
  3. 安装依赖关系。现在它们在package.json中被指定,这只是从项目目录运行的问题:<>之前npm安装之前这将下载所有依赖项并将它们放置到项目目录中的node_modules子目录中。
  4. 运行测试:<>之前NPM运行脚本测试

就是这样,测试开始了。唯一的问题是,他们失败,因为你的脚本文件不使用CommonJS格式。下面是myobj.js的样子:

exports.a = function() { return 'a'; }
exports.b = function() { return 'b'; }

这里是myobj-sub.js:

exports.x = function() { return 'x'; }
exports.y = function() { return 'y'; }

最后test/myobj.js:

var test = require('tape');
var MyObj = require('../myobj');
MyObj.Sub = require('../myobj-sub');
test('myobj', function(assert) {
    assert.equal('a', MyObj.a(), 'test a');
    assert.equal('x', MyObj.Sub.x(), 'test x');
    assert.end();
});

如果你现在重新运行测试,它们会成功。

如果你想从网页中使用你的CommonJS模块怎么办?您可以使用browserify。安装browserify:

sudo npm install -g browserify

并运行它生成一个bundle:

browserify myobj.js myobj-sub.js -o bundle.js

bundle.js现在是一个脚本文件,可以包含在一个网页-然后网页将能够做var MyObj = require('myobj');就像测试一样。

感谢@ wladdimir和一点实验,我发现我可以安排事情,以便我可以用标准函数表达式构建我的代码,以这种方式它将在浏览器中正常运行,也将在node.js中运行。

我只需要设置模块。导出到已定义对象,对于MyObj。Sub到'require' MyObj,(都屏蔽为仅在CommonJs/node.js中可见),如下:

myobj.js:

var MyObj = {};
MyObj.a = function() { return 'a'; }
MyObj.b = function() { return 'b'; }
if (typeof module!='undefined' && module.exports) module.exports = MyObj;

myobj-sub.js:

if (typeof module!='undefined' && module.exports) var MyObj = require('./myobj.js');
MyObj.Sub = {};
MyObj.Sub.x = function() { return 'x'; }
MyObj.Sub.y = function() { return 'y'; }
if (typeof module!='undefined' && module.exports) module.exports = MyObj.Sub;

(注意'。/'似乎对需求很重要)。

这些JavaScript文件可以用

相关内容

  • 没有找到相关文章

最新更新