我有一些要在浏览器中运行的 JavaScript,但是我已经将与 DOM 无关的基于逻辑的函数分解到它们自己的 js 文件中。
如果可以的话,我宁愿通过命令行来测试这些文件,为什么要打开浏览器只是为了测试代码逻辑?在挖掘了 Node.js 的多个测试库之后。我想这没什么大不了的,但这似乎需要我构建一个完整的 Node 项目,这需要我提供一个主要的项目,它在我的项目中并不存在,因为它只是从网页中触发的功能。
是否有一种测试 JavaScript 函数的解决方案可以像编写一个包含测试的 .js 文件并调用一个实用程序来运行这些测试一样简单?比必须设置运行器或构建项目并管理依赖项更简单的事情?感觉像是在 Eclipse 中编写和运行 JUnit 测试,而不像必须设置 Maven 项目才能运行 MVN 测试?
作为后续问题,这是否是正确的方法?在 Node.js 中运行本应在浏览器中运行的 JavaScript 测试是否正常?
最佳答案
使用 mocha 或 jasmine 等测试运行程序。非常容易设置和开始编写测试代码。例如,在 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 这样的 headless 浏览器来测试包含 DOM 操作代码。
关于javascript - 在 Node JS 中测试为浏览器编写的 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48799717/