我有一个6号角工作区(称为迈阿密空间),并创建了一个名为“ vice-lib”的组件库。该目录树如下所示:
.
└── miami-space <-- This is my workspace directory
├── e2e
│ └── src
├── node_modules
...
├── projects <-- Projects directory for created libraries
│ └── vice-lib
│ └── src
│ └── lib
└── src <-- The source directory for the app
├── app
├── assets
└── environments
(我用ng新库Vice-lib --ext = vlib创建了库)
如果我进入根目录(miami-space)并使用运行单元测试
npm运行测试
Karma在浏览器中运行测试,但是由于存在针对应用程序的测试和针对库的测试,因此karma分两个阶段运行测试。
第一阶段仅运行应用程序的测试,您会在控制台中看到以下内容:
λ ~/dev/tasks/t-122/cat/miami-space/ npm run test
> miami-fake-app@0.0.0 test /Users/Plastikfan/dev/tasks/t-122/cat/miami-space
> ng test
10% building modules 1/1 modules 0 active(node:41963) DeprecationWarning: Tapable.plugin is deprecated. Use new API on `.hooks` instead
21 06 2018 13:47:36.106:WARN [karma]: No captured browser, open http://localhost:9876/
21 06 2018 13:47:36.111:INFO [karma]: Karma v1.7.1 server started at http://0.0.0.0:9876/
21 06 2018 13:47:36.111:INFO [launcher]: Launching browser Chrome with unlimited concurrency
21 06 2018 13:47:36.116:INFO [launcher]: Starting browser Chrome
21 06 2018 13:47:39.894:WARN [karma]: No captured browser, open http://localhost:9876/
21 06 2018 13:47:40.006:INFO [Chrome 67.0.3396 (Mac OS X 10.13.4)]: Connected on socket _5z2mq2NuMiHHahdAAAA with id 8795036
Chrome 67.0.3396 (Mac OS X 10.13.4): Executed 3 of 3 SUCCESS (0.154 secs / 0.138 secs)
...,并且该应用的测试结果会显示在浏览器中
如果您按<< em> CTRL >-C,则Karma会终止浏览器,然后仅运行库的测试(请注意,当我按CTRL-C ):
^C 0% compiling21 06 2018 13:50:21.034:WARN [karma]: No captured browser, open http://localhost:9876/
21 06 2018 13:50:21.035:INFO [karma]: Karma v1.7.1 server started at http://0.0.0.0:9876/
21 06 2018 13:50:21.035:INFO [launcher]: Launching browser Chrome with unlimited concurrency
21 06 2018 13:50:21.044:INFO [launcher]: Starting browser Chrome
21 06 2018 13:50:24.453:WARN [karma]: No captured browser, open http://localhost:9876/
21 06 2018 13:50:24.544:INFO [Chrome 67.0.3396 (Mac OS X 10.13.4)]: Connected on socket FelqTteskkryAtnYAAAB with id 63644171
Chrome 67.0.3396 (Mac OS X 10.13.4): Executed 5 of 5 SUCCESS (0.112 secs / 0.093 secs)
所以我真的不了解Karma在这里如何运行,假定这是预期的行为。
是否仅在运行应用程序测试后才允许对组件库运行测试?如果我的应用程序中有很多测试,但我只想运行库测试该怎么办?
如果我“ cd”到Vice-lib目录并尝试使用npm run test运行测试,则由于package.json是一个不包含脚本部分的缩减配置,因此npm可以理解为失败: >
回显“错误:未指定测试”
因此,我进一步阅读了业力文档,并看到了“ basePath”(默认设置为空字符串)。描述为:
将用于解析文件中定义的所有相对路径并排除的根路径位置。如果basePath配置是 相对路径,则它将解析为 配置文件。
我以为我可以将其更新为指向库的根(希望在命令行中指定该选项,因此我可以编写多个脚本条目,请参见下文)
./ src / projects / vice-lib
但这似乎对Karma的行为没有影响,并且再次运行两组测试,并需要CTRL-C才能进入运行库测试的第二阶段。这似乎是一个非常繁琐的工作流程,我希望有一个解决方法,所以我可以立即运行库测试。
比方说,我在工作空间中插入了另一个库,因此现在有2个组件库和一个应用程序。这是否意味着我必须先运行应用程序测试,然后运行Vice-lib测试,然后运行新的库测试?我认为您可以看到我的处理方法,但这似乎并不正确,除非我做错了(很可能!)。
我有一个默认的test.ts文件,该文件与包含行(用于查找要运行的测试用例)的默认文件相同:
// Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);
但是我不确定如何在每个库级别进行更改。
我希望我可以在package.json:脚本中定义多个条目,例如:
"test:app": "ng test",
"test:vice": "ng test --<some option to refer to .projects/vice-lib>"
以便我可以直接为所需的库运行测试。
那么Karma在这里如何运行,难道它不设计为可与工作空间中的多个项目一起使用吗?
更新:我也尝试在副lib-lib测试治具之一上使用 fdescribe ,但这除了在控制台上发出警告外没有其他作用:
Chrome 67.0.3396(Mac OS X 10.13.4)错误:'DEPRECATION:适合并且 fdescribe将导致您的套件在以下位置报告“未完成”状态 茉莉花3.0'