Angular 6 + Universal Karma测试导入模块

时间:2018-08-22 08:21:23

标签: javascript angular karma-jasmine angular-universal

问题

我目前正在尝试使用Karma测试Angular 6应用程序,并且不断遇到如下错误:

Can't bind to 'ngModel' since it isn't a known property of 'mat-select'.

当我在单个组件中导入它时,它确实起作用,但是在另一个组件中,我必须再次导入它。

其中一个带有导入的测试文件示例:

import { async, ComponentFixture, TestBed } from '@angular/core/testing';

import { AdminOverviewComponent } from './admin-overview.component';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { MatFormFieldModule, MatTableModule, MatSelectModule } from '@angular/material';

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

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [ AdminOverviewComponent ],
      imports: [FormsModule, ReactiveFormsModule, MatFormFieldModule, MatTableModule, MatSelectModule]
    })
    .compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(AdminOverviewComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  });
});

是否可以将我在app.module.ts中声明的所有模块导入Karma正在生成的所有模块中?

谢谢。

1 个答案:

答案 0 :(得分:4)

每个测试spec文件都应独立于其他文件。因此,您必须重新配置每个测试spec文件中的所有内容(组件测试所必需的)。

据我所知,没有这样的全局配置来导入模块,声明组件等。

您必须这样做,

imports : [FormsModule]在所有使用ngModel的规范中