我在./test
中有2个测试文件。
假设test1.js
是一个Mocha测试,它会旋转服务器并针对URI运行各种请求,以确定它们的行为都符合预期。
test2.js
是一个Mocha测试,它使用Karma加载特定脚本(包括angular-mocks.js
)并在少数浏览器中运行,以确保那里的所有功能按预期运行。< / p>
在package.json
中,我将test
属性配置为:
"scripts": {
"test": "./node_modules/.bin/mocha --reporter spec -t 5000"
},
很酷,我可以从命令行npm test
运行Mocha。但是哦 - 不,Mocha运行我的两个脚本,test2.js
当然会崩溃整个事情,因为其中的逻辑假定它在Karma的上下文中运行(对不起,如果我没有正确描述这个)。
我可以有2个测试文件夹,test
和test-ng
或其他东西,但我认为最终我希望能够npm test
并运行不同的测试集,即:< / p>
"./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单元测试可以通过Karma运行:
./node_modules/.bin/karma start karma.conf.js
角度端到端测试可以通过量角器运行:
./node_modules/.bin/protractor protractor.conf.js
Express单元测试可以通过Mocha运行:
./node_modules/.bin/mocha ...
所以现在我根本没有使用npm test
,我想知道使用它有什么好处。
答案 0 :(得分:5)
您可以在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中的脚本有几个好处:
./node_modules/.bin/mocha
之类的咒语,因为
npm已经知道./node_modules/.bin
。start
,stop
,test
等),这反过来又更容易与他人合作,
人和框架(如Phusion Passenger)。您可以使用npm run
获取脚本列表。
有关优点的更全面的描述,请参阅Keith Cirkel的 great blog post