typescript - Mihin Angular CLI:n generoimat "spec.ts" -tiedostot ovat tarkoitettu?


Käytän Angular CLI:tä projektien luomiseen ja palvelemiseen. Näyttää siltä, että se toimii hyvin - vaikka pienissä oppimisprojekteissani se tuottaa enemmän kuin tarvitsen - mutta se on odotettavissa.

Olen huomannut, että se luo spec.ts-tiedoston jokaiselle Angular-elementille projektissa (Component, Service, Pipe jne.). Olen etsinyt tietoa aiheesta, mutta en ole löytänyt selitystä, mihin nämä tiedostot ovat tarkoitettu.

Ovatko nämä käännöstiedostoja, jotka ovat normaalisti piilossa käytettäessä tsc? Ihmettelin, koska halusin muuttaa huonosti nimetyn Component-komponentin nimen, jonka olin luonut, ja huomasin, että nimeä viitattiin myös näissä spec.ts-tiedostoissa.


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

Vastaus #1

Spec-tiedostot ovat yksikkötestejä lähdetiedostoillesi. Angular-sovelluksissa on käytäntönä olla yksi .spec.ts-tiedosto kutakin .ts-tiedostoa kohden. Niitä ajetaan Jasmine JavaScript -testikehyksen avulla Karma-testiajurin (https://karma-runner.github.io/) kautta, kun käytät ng test -komentoa.

Voit käyttää tätä lisälukemiseen:

https://angular.io/guide/testing

Vastaus #2

jos luot uuden Angular-projektin käyttämällä "ng new", voit ohittaa spec.ts-tiedostojen luomisen. Tätä varten sinun tulisi käyttää --skip-tests-vaihtoehtoa.

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

Aiheeseen liittyviä artikkeleita