Angular модульное тестирование CoreModule - PullRequest
0 голосов
/ 17 марта 2020

Наличие в Angular разделения между AppModule, CoreModule, FeatureModule и SharedModule является одной из лучших практик при развитии вашего приложения. Для CoreModule, который должен быть импортирован только один раз, есть возможность выдать ошибку, прежде чем будет выполнена транспиляция. Он использует @Optional() и @SkipSelf(), и если CoreModule будет импортирован более одного раза, он выдаст ошибку. Тем не менее, я действительно не знаю, как выполнить это модульное тестирование, и код вызывает мой тест на провал. Мой инструмент для модульного тестирования - Jest, но если у вас есть это решение в Jasmine, пожалуйста, поделитесь им.

Код ниже:

import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { HttpClientModule } from '@angular/common/http';
import { NgModule, Optional, SkipSelf } from '@angular/core';
@NgModule({
  exports: [BrowserModule, BrowserAnimationsModule, HttpClientModule],
  imports: [BrowserModule, BrowserAnimationsModule, HttpClientModule]
})

export class CoreModule {
  // Throw an error once CoreModule will be imported somewhere else in order to prevent from importing it more than once in the whole application.
  constructor(@Optional() @SkipSelf() parentModule: CoreModule) {
    if (parentModule) {
      throw new Error(
        `CoreModule has been already loaded. Import CoreModule only in the AppModule.`
      );
    }
  }
}
...