如何在同一代码库/package.json 中包含 Mocha 和 Karma 测试(服务器端和客户端)?
How can I include Mocha and Karma tests (server-side and client-side) in the same codebase / package.json?
我在 ./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 test
到 运行 Mocha。但是,哦不——Mocha 运行 是我的两个脚本,test2.js
当然会崩溃整个事情,因为其中的逻辑假设它是 运行ning 在 Karma 的上下文中(请原谅我我没有正确描述这一点)。
我可以有 2 个测试文件夹,test
和 test-ng
之类的,但我认为最终我希望能够 npm test
并有不同的测试集 运行,即:
"./node_modules/.bin/mocha --reporter spec -t 5000"
"./node_modules/.bin/karma start"
并将它们配置为每个 运行 正确的 js 文件。我一直在疯狂地寻找一个例子,其中客户端和服务器端测试存在于同一个 repo 中,但我只是找到教程和博客文章等来演示一个或另一个。有人可以帮助我朝着正确的方向前进吗?
编辑:我应该像这样考虑/组织我的测试吗?
./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 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"
}
并让 Mocha(或 Karma 等)各有一个脚本,可以 运行 分别由例如
$ npm run browsertest
将构建系统的所有部分直接放入脚本中有几个好处 package.json:
- 你可以避免全局安装 npm 包或使用像
./node_modules/.bin/mocha
这样的咒语,因为
npm 已经知道 ./node_modules/.bin
.
- 将所有内容放入 npm 脚本中可以轻松扩充标准 npm 操作
(
start
、stop
、test
等),这反过来又使与他人协作变得更加容易,
人员和框架(如 Phusion Passenger)。
- 你不需要G运行t、Gulp等
您可以使用 npm run
获取脚本列表。
有关优点的更详尽描述,请参阅 Keith Cirkel 的
great blog post.
我在 ./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 test
到 运行 Mocha。但是,哦不——Mocha 运行 是我的两个脚本,test2.js
当然会崩溃整个事情,因为其中的逻辑假设它是 运行ning 在 Karma 的上下文中(请原谅我我没有正确描述这一点)。
我可以有 2 个测试文件夹,test
和 test-ng
之类的,但我认为最终我希望能够 npm test
并有不同的测试集 运行,即:
"./node_modules/.bin/mocha --reporter spec -t 5000"
"./node_modules/.bin/karma start"
并将它们配置为每个 运行 正确的 js 文件。我一直在疯狂地寻找一个例子,其中客户端和服务器端测试存在于同一个 repo 中,但我只是找到教程和博客文章等来演示一个或另一个。有人可以帮助我朝着正确的方向前进吗?
编辑:我应该像这样考虑/组织我的测试吗?
./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 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"
}
并让 Mocha(或 Karma 等)各有一个脚本,可以 运行 分别由例如
$ npm run browsertest
将构建系统的所有部分直接放入脚本中有几个好处 package.json:
- 你可以避免全局安装 npm 包或使用像
./node_modules/.bin/mocha
这样的咒语,因为 npm 已经知道./node_modules/.bin
. - 将所有内容放入 npm 脚本中可以轻松扩充标准 npm 操作
(
start
、stop
、test
等),这反过来又使与他人协作变得更加容易, 人员和框架(如 Phusion Passenger)。 - 你不需要G运行t、Gulp等
您可以使用 npm run
获取脚本列表。
有关优点的更详尽描述,请参阅 Keith Cirkel 的 great blog post.