ES5环境下QUnit.js与Mocha集成:单命令执行测试的解决方案求助
解决QUnit与Mocha集成执行测试的方案
1. 手动挂载QUnit到全局对象
直接用--require qunit无法在ES5环境下把QExpose到全局,需要创建一个加载脚本手动处理。新建setup-qunit.js文件,内容如下:
var QUnit = require('qunit'); // 将QUnit挂载到全局,让测试用例能直接访问 global.QUnit = QUnit; // 按需把常用的QUnit断言/测试方法也挂载到全局,避免测试用例里写QUnit前缀 global.test = QUnit.test; global.equal = QUnit.equal; global.deepEqual = QUnit.deepEqual; global.ok = QUnit.ok;
然后修改Mocha执行命令,加载这个脚本替代直接加载qunit:
mocha --require ./setup-qunit.js ./*.js
2. 配置QUnit测试完成的钩子
由于是在Mocha环境下运行QUnit用例,需要在QUnit测试全部结束后通知Mocha终止进程,避免测试挂起。可以在setup-qunit.js末尾统一添加:
QUnit.done(function() { process.exit(0); });
3. 优化执行命令(可选)
把测试命令写到package.json的scripts里,方便快速执行:
{ "scripts": { "test": "mocha --require ./setup-qunit.js ./*.js" } }
之后直接运行npm test即可执行所有测试。
4. 区分两类测试文件(可选)
如果同时存在Mocha原生测试和QUnit测试,可以通过文件名规则分开匹配,比如:
mocha --require ./setup-qunit.js ./test/qunit-*.js ./test/mocha-*.js
这样既可以执行QUnit命名的测试文件,也能正常运行Mocha原生测试。
内容的提问来源于stack exchange,提问作者Raja G
相关产品推荐
相关产品推荐

