Angular CLi生成的“spec.ts”文件是什么?

时间:2016-05-28 19:01:33

标签: angular typescript

我是Angular 2(和Angular一般......)的新手,我发现它非常吸引人。我正在使用Angular CLi来生成和提供项目。它似乎运作良好 - 虽然对于我的小学习项目,它产生的比我需要的多 - 但这是可以预期的。

我注意到它为项目中的每个Angular元素生成spec.ts(组件,服务,管道等)。我一直在搜索,但没有找到这些文件的解释。

这些构建文件在使用tsc时通常是隐藏的吗?我想知道因为我想要更改我创建的名称不合适Component的名称,并发现该名称也在这些spec.ts文件中引用。

import {
  beforeEach,
  beforeEachProviders,
  describe,
  expect,
  it,
  inject,
} from '@angular/core/testing';
import { ComponentFixture, TestComponentBuilder } from '@angular/compiler/testing';
import { Component } from '@angular/core';
import { By } from '@angular/platform-browser';
import { PovLevelComponent } from './pov-level.component';

describe('Component: PovLevel', () => {
  let builder: TestComponentBuilder;

  beforeEachProviders(() => [PovLevelComponent]);
  beforeEach(inject([TestComponentBuilder], function (tcb: TestComponentBuilder) {
    builder = tcb;
  }));

  it('should inject the component', inject([PovLevelComponent],
      (component: PovLevelComponent) => {
    expect(component).toBeTruthy();
  }));

  it('should create the component', inject([], () => {
    return builder.createAsync(PovLevelComponentTestController)
      .then((fixture: ComponentFixture<any>) => {
        let query = fixture.debugElement.query(By.directive(PovLevelComponent));
        expect(query).toBeTruthy();
        expect(query.componentInstance).toBeTruthy();
      });
  }));
});

@Component({
  selector: 'test',
  template: `
    <app-pov-level></app-pov-level>
  `,
  directives: [PovLevelComponent]
})
class PovLevelComponentTestController {
}

4 个答案:

答案 0 :(得分:180)

spec文件是源文件的单元测试。 Angular应用程序的约定是为每个.ts文件提供.spec.ts文件。当您使用ng test命令时,它们通过Karma测试运行器(https://karma-runner.github.io/)使用Jasmine javascript测试框架运行。

您可以将其用于进一步阅读:

https://angular.io/guide/testing

答案 1 :(得分:10)

如果使用“ng new”生成新的角度项目,则可以跳过生成spec.ts文件。为此,您应该应用--skip-tests选项。

  

ng new ng-app-name --skip-tests

答案 2 :(得分:2)

.spec.ts文件用于单个组件的单元测试。 您可以通过ng test运行Karma任务运行程序。为了查看特定组件的单元测试用例的代码覆盖率,请运行ng test --code-coverage

答案 3 :(得分:0)

.spec.ts 文件用于您应用程序的unit testing

如果不生成它,只需在创建新的--spec=false时使用Component。像这样

ng generate component --spec=false mycomponentName