Cha*_*ser 7 mocha.js karma-runner karma-mocha
我有2个测试文件./test.
假设test1.js是一个Mocha测试,它会旋转服务器并针对URI运行各种请求,以确定它们都按预期运行.
test2.js是使用噶加载特定的脚本(包括摩卡测试angular-mocks.js),并运行在一些浏览器,以确保所有的功能有预期的行为.
在package.json我有这样的test属性配置:
"scripts": {
"test": "./node_modules/.bin/mocha --reporter spec -t 5000"
},
Run Code Online (Sandbox Code Playgroud)
很酷,我可以npm test从命令行运行摩卡.但是哦 - 不管--Mocha运行我的两个脚本,test2.js当然崩溃整个事情,因为其中的逻辑假设它在Karma的上下文中运行(对不起,如果我没有正确描述这个).
我有2个测试文件夹,test和test-ng什么的,但我想最终我希望能npm test和有不同组的运行测试,即:
"./node_modules/.bin/mocha --reporter spec -t 5000"
"./node_modules/.bin/karma start"
Run Code Online (Sandbox Code Playgroud)
并配置它们每个运行正确的js文件.我一直在疯狂地寻找一个例子,其中客户端和服务器端测试存在于同一个repo中,但我只是在寻找教程和博客文章等来展示其中一个.有人可以帮助我朝着正确的方向前进吗?
编辑:我应该考虑/组织这样的测试吗?
./tests/server/**.js
./tests/e2e/**.js
./tests/unit/**.js
Run Code Online (Sandbox Code Playgroud)
我可能根据npm默认使用该./test/文件夹的事实做出假设.
编辑2:我现在正在做我上面描述的,或多或少,并在repo的自述文件中描述我的测试:
角度单元测试可以通过Karma运行:
./node_modules/.bin/karma start karma.conf.js角度端到端测试可以通过Protractor运行:
./node_modules/.bin/protractor protractor.conf.jsExpress单元测试可以通过Mocha运行:
./node_modules/.bin/mocha ...
所以现在我根本就没用npm test,而且我想知道使用它有什么好处.
你可以把这样的东西放在你的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"
}
Run Code Online (Sandbox Code Playgroud)
并且让Mocha(或Karma等)各有一个脚本,可以通过例如单独运行.
$ npm run browsertest
Run Code Online (Sandbox Code Playgroud)
将构建系统的所有部分直接放入package.json中的脚本有几个好处:
./node_modules/.bin/mocha,因为npm已经知道了./node_modules/.bin.start,stop,test等),这反过来又使得它更容易与他人协作,人以及框架(如的Phusion客运).您可以使用npm run获取脚本列表.
有关优点的更全面描述,请参阅Keith Cirkel的 精彩博文.