角度 8 测试错误 模块"动态测试模块"导入的意外值"装饰器工厂"



我正在努力制作Jasmine&Karma框架融入当前运行于版本8.2的angular应用程序中。但我在因果报应测试运行窗口中遇到了这个奇怪的错误:

失败:模块"DynamicTestModule"导入了意外值"DecoratorFactory"。请添加@NgModule注释。

问题出在哪里?

我的组件.spec.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');    
}));
});

我找到了原因:-

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属性必须是某个自定义类名。现在我嘲笑商店阶级。

最新更新