Angular 8 ошибка тестирования Неожиданное значение DecoratorFactory, импортированное модулем DynamicTestModule - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь превратить Jasmine & Karma в текущее приложение angular, работающее в версии 8.2. Но я сталкиваюсь с этой странной ошибкой в ​​окне запуска теста Karma:

Failed: неожиданное значение DecoratorFactory, импортированное модулем DynamicTestModule. Добавьте аннотацию @NgModule.

В чем проблема?

Мой component.spe c .ts выглядит так:

import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { HomeComponent } from './home.component';
import { NO_ERRORS_SCHEMA} from '@angular/core';
import {RouterTestingModule} from '@angular/router/testing';
import {HttpClientTestingModule} from '@angular/common/http/testing';
import { MsalService } from '@azure/msal-angular';
import { Store } from '@ngrx/store';
import { Pipe } from '@angular/core';


describe('HomeComponent', () => {
  let component: HomeComponent;
  let fixture: ComponentFixture<HomeComponent>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
       imports: [RouterTestingModule, HttpClientTestingModule, Pipe]
      ,declarations: [HomeComponent]
      ,schemas:[NO_ERRORS_SCHEMA]
      ,providers: [
        {provide: MsalService, useFactory: '' },
        {provide: Store, useFactory: '' }
      ]
    })
    .compileComponents();
  }));

    it('should have header text', async(() => {
      const fixture = TestBed.createComponent(HomeComponent);
      fixture.detectChanges();
    
      const compiled = fixture.debugElement.nativeElement;
      //expect(compiled.querySelector('.header-txt').textContent).toContain('Tax');    
  }));
});

1 Ответ

0 голосов
/ 07 августа 2020

Я нашел причину: -

export class MockStore<T> {
      private state: BehaviorSubject<T> = new BehaviorSubject(undefined);
      
      setState(data: T) { this.state.next(data); }

      select(selector?: any): Observable<T> {
        return this.state.asObservable();
      }

      pipe() {}
      dispatch(action: any) { }
}

================================ ========================================

 TestBed.configureTestingModule({
    {provide: Store, useFactory: 'MockStore' }
    ..............

Свойство useFactory должно быть именем настраиваемого класса. Теперь я издевался над классом магазина.

...