Angular CLi가 생성 한 "spec.ts"파일은 무엇입니까?


210

나는 Angular 2 (그리고 Angular는 일반적으로 ...)를 처음 사용하고 매우 매력적입니다. Angular CLi 를 사용하여 프로젝트를 생성하고 제공하고 있습니다. 비록 작은 학습 프로젝트에서는 필요 이상으로 많은 것을 생산하지만 잘 작동하는 것 같습니다. 그러나 그것은 예상됩니다.

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 {
}

답변:


265

스펙 파일은 소스 파일에 대한 단위 테스트입니다. Angular 응용 프로그램의 규칙은 각 .ts 파일에 대해 .spec.ts 파일을 갖는 것입니다. 명령 을 사용할 때 Karma 테스트 러너 ( https://karma-runner.github.io/ )를 통해 Jasmine 자바 스크립트 테스트 프레임 워크를 사용하여 ng test실행됩니다.

좀 더 읽을 때 이것을 사용할 수 있습니다.

https://angular.io/guide/testing


17
고마워, 나는 이것을 스스로 궁금해했다. 테스트를 실행하고 싶지 않다고 가정합니다. .spec 파일을 안전하게 삭제할 수 있습니까? (및 e2e 폴더와 같은 테스트 폴더 및 파일?)
Kokodoko

7
나는 또한이 질문에 약간의 대답이 필요하다고 생각합니다. 우리는이 파일들을 완전히 무시하고 우리의 작업을 진행할 수 있습니까?
Mateusz Migała

18
awiseman이 말했듯이 사양 파일은 실제로 응용 프로그램을 테스트하기위한 것입니다. 테스트 파일을 사용하지 않으려면 삭제하거나 무시할 수 있습니다. 스펙 파일 없이도 프로젝트가 계속 작동합니다.
dennismuijs 2013

33
CLI를 사용하여 새 구성 요소를 생성 할 때 --spec=false스펙 파일 생성을 제외하도록 추가 할 수 있습니다 . 새 구성 요소를 생성하기위한 전체 명령은 다음과 같습니다 ng g component comp-name --spec=false.. 자세한 정보는 여기 : github.com/angular/angular-cli/wiki/generate-component
Dean

11
다음 angular-cli.json과 같이 수정하면 비활성화 할 수 있습니다 .{ "defaults": { "component": { "spec": false } } }
Ali Sherafat

20

"ng new"를 사용하여 새 각도 프로젝트를 생성하는 경우 spec.ts 파일 생성을 건너 뛸 수 있습니다. 이를 위해 --skip-tests 옵션을 적용해야합니다.

새로운 ng-app-name --skip-tests


1
프로젝트가 생성 된 후이 옵션을 설정할 수 있습니까?
HughHughTeotl

2

.spec.ts 파일은 개별 구성 요소에 대한 단위 테스트 용입니다. 를 통해 Karma 작업 러너를 실행할 수 있습니다 ng test. 특정 구성 요소에 대한 단위 테스트 사례의 코드 적용 범위를 보려면ng test --code-coverage


0

.spec.ts파일은 unit testing응용 프로그램에 사용됩니다 .

생성하지 않으면 --spec=falsenew을 만드는 동안 사용하십시오 Component. 이렇게

ng generate component --spec=false mycomponentName
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.