如何在同一个codebase/package.json中包含Mocha和Karma测试(服务器端和客户端)?

前端之家收集整理的这篇文章主要介绍了如何在同一个codebase/package.json中包含Mocha和Karma测试(服务器端和客户端)?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在./test中有2个测试文件.

假设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测试,我想知道使用它有什么好处.

解决方法

你可以把这样的东西放在你的package.json中:
"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.

猜你在找的JavaScript相关文章