karma-jasmine - Angular 8 测试错误模块“DynamicTestModule”导入的意外值“DecoratorFactory”
问题描述
我正在尝试将 Jasmine & Karma 框架制作为在 8.2 版中运行的当前 Angular 应用程序。但是我在 Karma 测试运行窗口中遇到了这个奇怪的错误:
失败:模块“DynamicTestModule”导入的意外值“DecoratorFactory”。请添加 @NgModule 注释。
问题是什么?
我的 componenent.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 属性必须是一些自定义类名。现在我嘲笑了商店课程。
推荐阅读
- javascript - 如果另一个元素包含特定文本,请单击一个元素。使用量角器进行自动化测试
- php - 如何将带有翻译的记录添加到夹具 symfony
- flutter - Flutter:如何模块化底部导航栏
- vue.js - 输入字段值不断重置@input?
- django - 从带有 400 错误请求的 ajax 错误将数据发布到 DjangoRestFramework api
- c# - 在数据库中移动磁贴/文本框存储位置
- linux - 在 /usr/bin 中创建自定义命令不起作用
- python - 如何为 Django Tables2 使用 Django __str__() 方法
- matlab - MATLAB 中的 3D 海洋温度插值
- node.js - 将 NodeJS 和 NPM 更新到下一个版本?