typescript - Vad är "spec.ts"-filerna som genereras av Angular CLI till för?
Jag använder Angular CLI för att generera och serva projekt. Det verkar fungera bra - även om det för mina små lärandeprojekt producerar mer än jag behöver - men det är att vänta.
Jag har märkt att det genererar spec.ts för varje Angular-element i ett projekt (Component, Service, Pipe, etc.). Jag har sökt runt men har inte hittat någon förklaring på vad dessa filer är till för.
Är dessa byggfiler som normalt är dolda när man använder tsc? Jag undrade eftersom jag ville ändra namnet på en dåligt namngiven Component som jag hade skapat och upptäckte att namnet också refererades i dessa spec.ts-filer.
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 {
}
Svar #1
Spec-filerna är enhetstester för dina källfiler. Konventionen för Angular-applikationer är att ha en .spec.ts-fil för varje .ts-fil. De körs med Jasmine JavaScript-testframework genom Karma-testköraren (https://karma-runner.github.io/) när du använder kommandot ng test.
Du kan använda detta för vidare läsning:
https://angular.io/guide/testing
Svar #2
om du skapar ett nytt Angular-projekt med hjälp av "ng new" kan du hoppa över skapandet av spec.ts-filer. För detta bör du använda --skip-tests-alternativet.
ng new ng-app-name --skip-tests