Тестирование и сборка проектов Angular7

В этой главе мы обсудим следующие темы -

  • Чтобы протестировать проект Angular 7
  • Чтобы создать проект Angular 7

Тестирование проекта Angular 7

Во время настройки проекта уже установлены необходимые пакеты для тестирования. Eсть.spec.ts файл, создаваемый для каждого нового компонента, службы, директивы и т. д. Мы собираемся использовать jasmine для написания наших тестовых примеров.

Для любых изменений, добавленных в ваш компонент, службы, директивы или любые другие созданные файлы, вы можете включить свои тестовые примеры в соответствующие файлы .spec.ts. Таким образом, большая часть модульного тестирования может быть рассмотрена в самом начале.

Для запуска тестовых случаев используется следующая команда:

ng test

Ниже представлен файл app.component.spec.ts для 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';
}

Теперь давайте запустим команду, чтобы увидеть запущенные тестовые примеры.

Статус тестовых случаев отображается в командной строке, как показано выше, и также открывается в браузере, как показано ниже -

В случае любого сбоя он покажет следующие детали:

Для этого давайте изменим app.component.spec.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('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!');
   });
});

В приведенном выше файле тестовые примеры проверяют заголовок, Angular 7. Но в app.component.ts у нас есть заголовок,angular7-app как показано ниже -

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

Здесь тестовый пример не удастся, и ниже приведены сведения, показанные в командной строке и браузере.

В командной строке

Следующий экран отображается в командной строке -

В браузере

В браузере отображается следующий экран -

Все неудачные тестовые примеры для вашего проекта будут отображаться, как показано выше, в командной строке и браузере.

Точно так же вы можете написать тестовые примеры для своих сервисов, директив и новых компонентов, которые будут добавлены в ваш проект.

Сборка Angular 7 Project

После того, как вы закончите работу над проектом в Angular, нам нужно построить его, чтобы его можно было использовать в производстве или заявлении.

Конфигурация сборки, т. Е. Производство, постановка, разработка, тестирование, должна быть определена в вашем src/environments.

В настоящее время у нас есть следующие среды, определенные в src / environment -

Вы можете добавлять файлы на основе вашей сборки в src / environment, например, environment.staging.ts, enviornment.testing.ts и т. Д.

В настоящее время мы постараемся построить для производственной среды. Файлenvironment.ts содержит настройки среды по умолчанию и подробную информацию о файле следующим образом:

export const environment = {
   production: false
};

Чтобы собрать файл для производства, нам нужно сделать production: true в environment.ts следующим образом -

export const environment = {
   production: true
};

Файл среды по умолчанию должен быть импортирован внутри компонентов следующим образом:

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';
}

Замена среды по умолчанию на производственную, которую мы пытаемся сделать, определяется внутри angular.json fileReplacements раздел следующим образом -

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

Когда команда для сборки запускается, файл заменяется на src/environments/environment.prod.ts. Здесь можно добавить дополнительную конфигурацию, такую ​​как постановка или тестирование, как показано в приведенном ниже примере -

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

Итак, команда для запуска сборки следующая:

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

Теперь давайте запустим команду сборки для производства, команда создаст папку dist внутри нашего проекта, в которой будут окончательные файлы после сборки.

Окончательные файлы создаются внутри папки dist /, которая может быть размещена на вашем рабочем сервере.