Zie*_*elu 89 jasmine angular-cli angular
我使用Angular-CLI(beta 20)构建了Angular2项目.
有没有办法只针对一个选定的spec文件运行测试?
我曾经有一个基于Angular2快速启动的项目,我可以手动将规范添加到jasmine文件中.但是我不知道如何在业力测试之外设置它,或者如何使用Angular-CLI构建将业力测试限制为特定文件.
Tom*_*ski 168
您的每个.spec.ts
文件都将其所有测试分组在describe
块中,如下所示:
describe('SomeComponent', () => {...}
您可以通过在describe
函数名前加上f
以下内容来轻松运行此单个块:
fdescribe('SomeComponent', () => {...}
如果您有这样的功能,则不会describe
运行其他块.顺便说一句.你可以用it
=> 做类似的事情,fit
还有一个"黑名单"版本 - x
.所以:
fdescribe
并且仅fit
导致以这种方式标记的功能运行xdescribe
并xit
导致以这种方式标记的所有函数运行小智 62
test.ts
在src
文件夹内配置文件:
const context = require.context('./', true, /\.spec\.ts$/);
Run Code Online (Sandbox Code Playgroud)
替换/\.spec\.ts$/
为您要测试的文件名.例如:/app.component\.spec\.ts$/
这将仅运行测试app.component.spec.ts
.
Pet*_*erB 36
这在每种情况下都对我有用:
ng test --include='**/dealer.service.spec.ts'
Run Code Online (Sandbox Code Playgroud)
但是,我通常会为此收到“TypeError:无法读取 null 的属性 'ngModule'”:
ng test --main src/app/services/dealer.service.spec.ts
Run Code Online (Sandbox Code Playgroud)
@angular/cli 10.0.4 的版本
aln*_*sre 28
--include
它与--include
ng test --include src/app/path-to-component/path-component.component.spec.ts
Run Code Online (Sandbox Code Playgroud)
我尝试过--main
,但它显示了所有失败的结果,而事实并非如此。我想--main
会改变主test.ts
文件。
iis*_*cas 24
您可以使用Angular CLI(ng
命令)仅测试特定文件,如下所示:
ng test --main ./path/to/test.ts
Run Code Online (Sandbox Code Playgroud)
更多文档位于https://angular.io/cli/test
请注意,虽然这适用于独立库文件,但不适用于有角度的组件/服务/等。这是因为有角度的文件依赖于其他文件(即src/test.ts
在Angular 7中)。遗憾的是,该--main
标志没有多个参数。
小智 7
执行此操作的一个简单方法是使用f启动描述及其所有内容。
fdescribe('testecomponente', () => {
fit('should create', () => {
//your code
}
}
Run Code Online (Sandbox Code Playgroud)
如果您希望能够控制从命令行中选择了哪些文件,我设法对Angular 7进行了此操作。
总之,您需要安装@angular-devkit/build-angular:browser
然后创建自定义Webpack插件以通过测试文件regex。例如:
angular.json-从更改测试生成器@angular-devkit/build-angular:browser
并设置自定义配置文件:
...
"test": {
"builder": "@angular-builders/custom-webpack:browser",
"options": {
"customWebpackConfig": {
"path": "./extra-webpack.config.js"
},
...
Run Code Online (Sandbox Code Playgroud)
extra-webpack.config.js-创建一个从命令行读取正则表达式的webpack配置:
const webpack = require('webpack');
const FILTER = process.env.KARMA_FILTER;
let KARMA_SPEC_FILTER = '/.spec.ts$/';
if (FILTER) {
KARMA_SPEC_FILTER = `/${FILTER}.spec.ts$/`;
}
module.exports = {
plugins: [new webpack.DefinePlugin({KARMA_SPEC_FILTER})]
}
Run Code Online (Sandbox Code Playgroud)
test.ts-编辑规格
...
// Then we find all the tests.
declare const KARMA_CONTEXT_SPEC: any;
const context = require.context('./', true, KARMA_CONTEXT_SPEC);
Run Code Online (Sandbox Code Playgroud)
然后使用以下命令覆盖默认值:
KARMA_FILTER='somefile-.*\.spec\.ts$' npm run test
Run Code Online (Sandbox Code Playgroud)
我在这里记录了背景故事,对于类型和错误链接,我们事先表示歉意。感谢@ Aish-Anu的上述回答,指出了我的正确方向。
这在 Angular 7 中对我有用。它基于 ng 命令的 --main 选项。我不确定这个选项是否没有记录并且可能会发生变化,但它对我有用。我在 script 部分的 package.json 文件中添加了一行。使用 ng test 命令的 --main 选项,我指定要执行的 .spec.ts 文件的路径。例如
"test 1": "ng test --main E:/WebRxAngularClient/src/app/test/shared/my-date-utils.spec.ts",
Run Code Online (Sandbox Code Playgroud)
您可以像运行任何此类脚本一样运行该脚本。我通过单击 npm 部分中的“test 1”在 Webstorm 中运行它。
小智 5
在 bash 终端中,我喜欢使用双破折号。使用 VS Code,您可以在资源管理器或打开的选项卡上右键单击规范文件。然后选择“复制相对路径”。运行下面的命令,从剪贴板粘贴相对路径。
npm t -- --include relative/path/to/file.spec.ts
Run Code Online (Sandbox Code Playgroud)
双破折号表示您的命令选项的结束npm t
并将之后的任何内容传递给指向 的下一个命令ng t
。它不需要任何修改,并迅速给出所需的结果。
归档时间: |
|
查看次数: |
67275 次 |
最近记录: |