假设test1.js是一个Mocha测试,可以旋转服务器并针对URI运行各种请求,以确定它们的行为都符合预期.
test2.js是一个Mocha测试,它使用Karma加载特定脚本(包括angular-mocks.js)并在少数浏览器中运行,以确保其中的所有功能都按预期运行.
在package.json中,我将test属性配置为:
"scripts": { "test": "./node_modules/.bin/mocha --reporter spec -t 5000" },
很酷,我可以从命令行进行npm测试来运行Mocha.但是哦 – 不管–Mocha运行我的两个脚本,而test2.js当然会崩溃整个事情,因为其中的逻辑假定它在Karma的环境中运行(对不起,如果我没有正确描述这个).
我可以有2个测试文件夹,测试和测试-ng等等,但我认为最终我希望能够进行npm测试并运行不同的测试集,即:
"./node_modules/.bin/mocha --reporter spec -t 5000" "./node_modules/.bin/karma start"
并配置它们每个运行正确的js文件.我一直在疯狂地寻找一个例子,其中客户端和服务器端测试存在于同一个仓库中,但我只是找到教程和博客文章等来展示其中一个.有人能帮助我朝着正确的方向前进吗?
编辑:我应该考虑/组织这样的测试吗?
./tests/server/**.js ./tests/e2e/**.js ./tests/unit/**.js
我可能根据默认情况下npm使用./test/文件夹这一事实做出假设.
编辑2:我现在正在做我上面描述的,或多或少,并在repo的自述文件中描述我的测试:
Angular unit tests can be run via Karma:
./node_modules/.bin/karma start karma.conf.js
Angular end-to-end tests can be run via Protractor:
./node_modules/.bin/protractor protractor.conf.js
Express unit tests can be run via Mocha:
./node_modules/.bin/mocha ...
所以现在我根本没有使用npm测试,我想知道使用它有什么好处.
解决方法
"scripts": { "unittest": "mocha --reporter spec tests/test1.js","browsertest": "mocha --reporter spec -t 5000 tests/test2.js","test": "npm run unittest && npm run browsertest" }
并且让Mocha(或Karma等)各有一个脚本,可以通过例如单独运行.
$npm run browsertest
将构建系统的所有部分直接放入package.json中的脚本有几个好处:
>您可以避免全局安装npm软件包或使用./node_modules/.bin/mocha等咒语,因为
npm已经知道./node_modules/.bin.
>将所有内容放入npm脚本可以轻松扩充标准的npm操作
(开始,停止,测试等),这反过来又更容易与他人合作,
人和框架(如Phusion Passenger).
>你不需要Grunt,Gulp等.
您可以使用npm run获取脚本列表.
有关优点的更全面描述,请参阅Keith Cirkel的
great blog post.