Предоставление псевдонима сервиса в Angular 7 breaks при выполнении сборки - PullRequest
0 голосов
/ 16 октября 2019

Я написал сервис MyService и смоделированную его версию - MyServiceMock, для модульных тестов, предоставляющих и использующих результат смоделированной службы, пока мой BE не будет готов.

Я использовал MyService какпсевдоним MyServiceMock, поэтому мне не придется менять свой код в будущем, когда BE будет готов:

В моем сервисном модуле я использую:

import { MyServiceMock as MyService } from './my-service/my-service-mock.service';

const providers: Array<Provider> = [
  MyService,

...

И то же самое вмои компоненты:

import { MyServiceMock as MyService } from './my-service/my-service-mock.service';

...

 constructor(
   myServce: myService,

...

И он работал нормально с ng serve и ng build ... пока я не обслуживал сборку. В браузере произошла ошибка во время выполнения MyService is undefined. Но учтите, что при подаче через Angular ng serve все работало нормально. И не было никаких предупреждений и ошибок в ng build |ng build --prod процессы сборки.

Решение ниже простое, но я был бы признателен за любые объяснения этого.

Спасибо!

Ответы [ 2 ]

1 голос
/ 16 октября 2019

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

в app.module.ts в providers:

@NgModule({
  imports:      [ BrowserModule, FormsModule ],
  declarations: [ AppComponent ],
  bootstrap:    [ AppComponent ],
  providers: [
    {
      provide: RealService,
      useClass: FakeService
    }
  ]
})
export class AppModule { }

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

0 голосов
/ 16 октября 2019

Решение:

В сервисном модуле мы предоставляем смоделированный сервис как есть, без псевдонима. И мы используем псевдоним только в компонентах:

import { MyServiceMock } from './my-service/my-service-mock.service';

const providers: Array<Provider> = [
  MyServiceMock,

...
...