модульное тестирование в angular 6 - как добавить класс со статическим свойством для тестирования - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть класс AppGlobal, который вставляется в AppModule, а затем я использую этот одноэлементный класс для создания экземпляров зависимостей.но я получаю следующую ошибку:

TypeError: Невозможно прочитать свойство 'get' undefined в новом StopWatchComponent (webpack: ///./src/app/UserSection/Components/StopWatchComponent.ts?: 27: 109)

 @Injectable()
export class AppGlobal {
AppModule.injector.get(MyService)`
  public static injector: Injector;
  constructor(injector: Injector) {
    AppGlobal.injector = injector;
  }
 }

проверяемый компонент

export class StopWatchComponent  implements OnInit {
      public title: string;
         private stopWatchService: StopWatchService;
      constructor() {
         this.stopWatchService = AppGlobal.injector.get(StopWatchService);
         console.log('constructor');
}

корневой модуль

export class AppModule {
      constructor(_appGlobal: AppGlobal) {
      }
}

контрольные примеры

describe('StopWatchComponent', () => {
  let component: StopWatchComponent;
  let fixture: ComponentFixture<StopWatchComponent>;
  // let el: HTMLElement;

  beforeEach(async(() => {

    TestBed.configureTestingModule({
      imports: [
        RouterTestingModule,
        FormsModule
      ],
      declarations: [ StopWatchComponent ],
      providers: [AppGlobal
        {provide: StopWatchService, useClass: StopWatchServiceMock}]
    }).compileComponents()
      .then(() => {
        console.log('configureTestingModule ok');

      }).catch((e) => {
      console.log(e.message);
      throw e;
    });

    fixture = TestBed.createComponent(StopWatchComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();

  }));

  it('should have title User stopwatch', () => {
    expect(component.title).toEqual('User stopwatch');
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...