我有一些JavaScript将在浏览器中运行,但我已经将与DOM无关的基于逻辑的函数分解为自己的js文件。
如果有可能,我宁愿通过命令行测试这些文件,为什么要打开浏览器只是为了测试代码逻辑?在挖掘Node.js的多个测试库之后。我想这不是什么大问题,但这似乎要求我构建一个完整的节点项目,这需要我提供一个main,它在我的项目中并不存在,因为它只是从网页中触发的函数。
是否有测试JavaScript函数的解决方案,只需编写带有测试的.js文件并调用实用程序来运行这些测试就可以了?比设置跑步者,构建项目和管理依赖项更简单?感觉就像在Eclipse中编写和运行JUnit测试一样,有点像为了运行MVN测试而必须设置Maven项目?
作为一个后续问题,这是否是正确的方法呢?运行在Node.js中的浏览器中运行的JavaScript测试是否正常?
答案 0 :(得分:0)
使用像摩卡或茉莉花这样的测试跑步者。非常容易设置并开始编写测试代码。例如,在mocha中,您可以编写简单的测试用例,例如
var assert = require('assert');
var helper = require('../src/scripts/modules/helper.js');
var model = require('../src/scripts/modules/model.js');
model.first.setMenuItem ({
'title': 'Veggie Burger',
'count': 257,
'id': 1
});
describe('increment', function(){
console.log ("Count : " + model.first.getMenuItem().count);
it('should increment the menu item', function(){
helper.increment();
assert.equal(model.first.getMenuItem().count, 258);
});
});
并像
一样运行它们$ ./node_modules/mocha/bin/mocha test/*.js
其中test / * .js是规范文件(单元测试文件如上所述)
输出类似于:
Count : 257
increment
✓ should increment the menu item
1 passing (5ms)
您甚至可以使用像PhantomJS这样的无头浏览器来测试包含DOM操作代码。
答案 1 :(得分:0)
我将接受Ari Singh's回答推荐Mocha,并特别感谢Ayush Gupta引导我走上一条道路,最终让我以可以运行的格式编写我的js文件浏览器和node.js。
只是为了扩展Ari对某些让生活变得更轻松的事情的回答。
npm install -g mocha
全局安装了mocha。另外,我创建了一个test
目录,我将所有测试都放入其中。通过执行此操作,我只需要调用mocha test
来运行单元测试。没有package.json,没有冗长的路径进入node_modules来运行mocha。在我的根目录中,我有foo.js
,其中包含以下内容:
function bar() {
console.log("Hi")
}
module.export = bar
然后在test
目录中我有test_foo.js
,其中包含以下内容(注意此示例没有测试,请参阅Ari的答案,以获取在Mocha中编写测试的示例):
var bar = require('../foo.js')
bar()
使用这种方法,我可以使用mocha test
在节点中测试条形函数,并通过将其作为脚本导入,仍在我的HTML页面中使用它。