Angular 5使用材料,jasmine karma测试失败,带有mat-icon

问题描述 投票:10回答:2

我正试图用茉莉花业力来

ng test

对Angular Materials的所有问题感到惊讶。我看到几个月前它被称为md-icon而不是mat-icon等的OLDER版材料的例子......

因此,这不能解决抛出的错误

MaterialModule.forRoot()

错误

mat-icon不是已知的元素角度材质

angular angular-material karma-jasmine angular-material2
2个回答
23
投票

我遇到了测试材料组件的相同问题。

感谢k.vincent在评论中为我提供了正确的答案。

对于使用Material的组件,请确保* .spec文件与此类似:

import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';

...

beforeEach(async(() => {
    TestBed.configureTestingModule({
        declarations: [ MyComponent ],
        schemas: [ CUSTOM_ELEMENTS_SCHEMA ]
    })
    .compileComponents();
}));

0
投票

我的测试也失败了,无法绑定到'formGroup',因为它不是'form'的已知属性;如果'app-forgot-password'是一个Angular组件,那么请验证它是否是该模块的一部分;如果'mat-card'是一个Angular组件,那么请验证它是否是该模块的一部分。在spec文件中,我添加了ReactiveFormsModule和CUSTOM_ELEMENTS_SCHEMA的导入,并且它有效。

import { ReactiveFormsModule } from '@angular/forms';
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';

beforeEach(async(() => {
TestBed.configureTestingModule({
  declarations: [ ForgotPasswordComponent ],
  imports: [ReactiveFormsModule],
  schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
.compileComponents();
}));

然后我有另一个错误:无法绑定到'routerLink',因为它不是'a'的已知属性。我可以通过在spec文件中添加RouterTestingModule来修复它:

import {RouterTestingModule} from '@angular/router/testing';

beforeEach(async(() => {
TestBed.configureTestingModule({
  imports: [
    FormsModule,
    ReactiveFormsModule,
    BrowserAnimationsModule,
    MaterialModule,
    RouterTestingModule
  ],
  declarations: [ LoginFormComponent ]
})
.compileComponents();
}));
© www.soinside.com 2019 - 2024. All rights reserved.