2016-05-28 15 views
69

Sono nuovo per Angular 2 (e Angular in generale ...) e lo trovo molto coinvolgente. Sto usando Angular CLi per generare e servire i progetti. Sembra funzionare bene, anche se per i miei piccoli progetti di apprendimento, produce più del necessario - ma c'è da aspettarselo.Quali sono i file "spec.ts" generati da Angular CLi per?

Ho notato che genera spec.ts per ogni elemento Angolare in un progetto (Componente, Servizio, Tubo, ecc.). Ho cercato in giro ma non ho trovato una spiegazione di cosa sono questi file.

Questi file di build sono normalmente nascosti quando si utilizza tsc? Mi chiedevo perché volevo cambiare il nome di uno scarsamente chiamato Component che avevo creato e ho scoperto che il nome era anche referenziato in questi file 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 { 
} 

risposta

85

i file di specifica sono unit test per i file di origine. La convenzione per le applicazioni angolari consiste nell'avere un file .spec.ts per ogni file .ts. Vengono eseguiti utilizzando il framework di test javascript Jasmine tramite il task runner Karma quando si utilizza il comando 'ng test'.

È possibile utilizzare questo per qualche ulteriore lettura:

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

+6

Grazie, mi chiedevo questo me stesso. Supponiamo che non voglia eseguire alcun test, posso eliminare in modo sicuro i file .spec? (e anche le cartelle e i file di test come la cartella e2e?) – Kokodoko

+1

Mi sembra anche che questa domanda richieda un po 'più di risposta. Possiamo semplicemente ignorare questi file e fare solo il nostro lavoro? –

+7

Come afferma awiseman, i file spec sono per testare l'applicazione. Se non si desidera utilizzare i file di test, è sufficiente eliminarli o ignorarli. Il progetto continuerà a funzionare senza i file spec. – dennismuys

Problemi correlati