2016-05-28 10 views
69

Jestem nowy w Angular 2 (i Angular ogólnie ...) i jestem bardzo wciągająca. Używam Angular CLi do generowania i obsługi projektów. Wydaje się, że działa dobrze - choć w przypadku moich małych projektów edukacyjnych produkuje więcej, niż potrzebuję - ale tego można się spodziewać.Do czego służą pliki "spec.ts" wygenerowane przez Angular CLi?

Zauważyłem, że generuje ona spec.ts dla każdego elementu kątowego w projekcie (komponent, usługa, rura itp.). Szukałem, ale nie znalazłem wyjaśnienia, do czego służą te pliki.

Czy te pliki kompilacji są zwykle ukryte podczas korzystania z tsc? Zastanawiałem się, ponieważ chciałem zmienić nazwę słabo nazwanego Component, którą stworzyłem i odkryłem, że nazwa ta została również wymieniona w tych plikach 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 { 
} 

Odpowiedz

85

spec plików są testy jednostkowe dla plików źródłowych. Konwencją dla aplikacji Angular jest posiadanie pliku .spec.ts dla każdego pliku .ts. Są one uruchamiane przy użyciu struktury testowej javascript Jasmine za pośrednictwem programu do obsługi zadań Karma, gdy używana jest komenda "ng test".

Można to wykorzystać do jakiejś dalszej lektury:

https://angular.io/docs/ts/latest/guide/testing.html

+6

Dzięki, zastanawiałem się ten sam. Załóżmy, że nie chcę uruchamiać żadnych testów, czy mogę bezpiecznie usunąć pliki .spec? (a także foldery testowe i pliki, takie jak folder e2e?). – Kokodoko

+1

Mam również wrażenie, że to pytanie wymaga nieco więcej odpowiedzi. Czy możemy po prostu całkowicie zignorować te pliki i po prostu przejść do naszej pracy? –

+7

Jak podaje autor, pliki spec są rzeczywiście przeznaczone do testowania twojej aplikacji. Jeśli nie chcesz używać plików testowych, możesz je po prostu usunąć lub zignorować. Twój projekt będzie działał bez plików spec. – dennismuys

Powiązane problemy