Test e costruzione di progetti Angular7

In questo capitolo verranno discussi i seguenti argomenti:

  • Per testare Angular 7 Project
  • Per costruire Angular 7 Project

Testing Angular 7 Project

Durante la configurazione del progetto, i pacchetti richiesti per il test sono già installati. C'è un.spec.ts file creato per ogni nuovo componente, servizio, direttiva, ecc. Useremo jasmine per scrivere i nostri casi di test.

Per qualsiasi modifica aggiunta al componente, ai servizi, alle direttive o a qualsiasi altro file creato, è possibile includere i casi di test nei rispettivi file .spec.ts. Quindi la maggior parte dei test unitari può essere coperta all'inizio stesso.

Per eseguire i casi di test, il comando utilizzato è il seguente -

ng test

Di seguito è riportato il file app.component.spec.ts per app.component.ts -

import { TestBed, async } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { AppComponent } from './app.component';

describe('AppComponent', () => {
   beforeEach(async(() => {
      TestBed.configureTestingModule({
         imports: [
            RouterTestingModule
         ],
         declarations: [
            AppComponent
         ],
      }).compileComponents();
   }));
   it('should create the app', () => {
      const fixture = TestBed.createComponent(AppComponent);
      const app = fixture.debugElement.componentInstance;
      expect(app).toBeTruthy();
   });
   it(`should have as title 'angular7-app'`, () => {
      const fixture = TestBed.createComponent(AppComponent);
      const app = fixture.debugElement.componentInstance;
      expect(app.title).toEqual('angular7-app');
   });
   it('should render title in a h1 tag', () => {
      const fixture = TestBed.createComponent(AppComponent);
      fixture.detectChanges();
      const compiled = fixture.debugElement.nativeElement;
      expect(compiled.querySelector('h1').textContent).toContain(
         'Welcome to angular7-app!');
   })
});

app.component.ts

import { Component } from '@angular/core';
@Component({
   selector: 'app-root',
   templateUrl: './app.component.html',
   styleUrls: ['./app.component.css']
})
export class AppComponent {
   title = 'angular7-app';
}

Ora eseguiamo il comando per vedere i casi di test in esecuzione.

Lo stato dei casi di test viene mostrato nella riga di comando come mostrato sopra e si aprirà anche nel browser come mostrato di seguito -

In caso di guasto, mostrerà i dettagli come segue:

Per farlo, cambiamo app.component.spec.ts come segue:

import { TestBed, async } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { AppComponent } from './app.component';

describe('AppComponent', () => {
   beforeEach(async(() => {
      TestBed.configureTestingModule({
         imports: [
            RouterTestingModule
         ],
         declarations: [
            AppComponent
         ],
      }).compileComponents();
   }));
   it('should create the app', () => {
      const fixture = TestBed.createComponent(AppComponent);
      const app = fixture.debugElement.componentInstance;
      expect(app).toBeTruthy();
   });
   it(`should have as title 'angular7-app'`, () => {
      const fixture = TestBed.createComponent(AppComponent);
      const app = fixture.debugElement.componentInstance;
      expect(app.title).toEqual('Angular 7'); // change the 
      title from angular7-app to Angular 7
   });
   it('should render title in a h1 tag', () => {
      const fixture = TestBed.createComponent(AppComponent);
      fixture.detectChanges();
      const compiled = fixture.debugElement.nativeElement;
      expect(compiled.querySelector('h1').textContent).toContain(
         'Welcome to angular7-app!');
   });
});

Nel file sopra, i casi di test controllano il titolo, Angular 7. Ma in app.component.ts, abbiamo il titolo,angular7-app come mostrato di seguito -

import { Component } from '@angular/core';
@Component({
   selector: 'app-root',
   templateUrl: './app.component.html',
   styleUrls: ['./app.component.css']
})
export class AppComponent {
   title = 'angular7-app';
}

Qui il test case fallirà e di seguito sono riportati i dettagli mostrati nella riga di comando e nel browser.

Nella riga di comando

La seguente schermata viene visualizzata nella riga di comando -

Nel browser

La seguente schermata viene visualizzata nel browser:

Tutti i casi di test falliti per il tuo progetto verranno visualizzati come mostrato sopra nella riga di comando e nel browser.

Allo stesso modo, puoi scrivere casi di test per i tuoi servizi, direttive e nuovi componenti che verranno aggiunti al tuo progetto.

Building Angular 7 Project

Una volta che hai finito con il progetto in Angular, dobbiamo costruirlo in modo che possa essere utilizzato in produzione o dichiarando.

La configurazione per build, ovvero produzione, staging, sviluppo, test deve essere definita nel tuo file src/environments.

Al momento, abbiamo i seguenti ambienti definiti in src / environment:

Puoi aggiungere file basati sulla tua build a src / environment, cioè environment.staging.ts, enviornment.testing.ts, ecc.

Al momento, proveremo a creare un ambiente di produzione. Il fileenvironment.ts contiene le impostazioni di ambiente predefinite e i dettagli del file come segue:

export const environment = {
   production: false
};

Per creare il file per la produzione, dobbiamo creare il file production: true in environment.ts come segue -

export const environment = {
   production: true
};

Il file dell'ambiente predefinito deve essere importato all'interno dei componenti come segue:

app.component.ts

import { Component } from '@angular/core';
import { environment } from './../environments/environment';

@Component({
   selector: 'app-root',
   templateUrl: './app.component.html',
   styleUrls: ['./app.component.css']
})
export class AppComponent {
   title = 'angular7-app';
}

La sostituzione dell'ambiente dal default alla produzione che stiamo cercando di fare è definita all'interno di angular.json fileReplacements sezione come segue -

"production": {
   "fileReplacements": [
      {
         "replace": "src/environments/environment.ts",
         "with": "src/environments/environment.prod.ts"
      }
   ],
}

Quando viene eseguito il comando per la compilazione, il file viene sostituito in src/environments/environment.prod.ts. La configurazione aggiuntiva come lo staging o il test può essere aggiunta qui come mostrato nell'esempio seguente:

"configurations": {
   "production": { ... },
   "staging": {
      "fileReplacements": [
         {
            "replace": "src/environments/environment.ts",
            "with": "src/environments/environment.staging.ts"
         }
      ]
   }
}

Quindi il comando per eseguire la build è il seguente:

ng build --configuration = production // for production environmnet
ng build --configuration = staging // for stating enviroment

Ora eseguiamo il comando build per la produzione, il comando creerà una cartella dist all'interno del nostro progetto che avrà i file finali dopo la build.

I file finali vengono creati all'interno della cartella dist / che può essere ospitata sul server di produzione alla fine.