简介:
我有一个Angular 8.2.2应用程序,我正在尝试使用默认的Jasmine / Karma组合为其编写单元测试。该应用程序在这里和那里都使用了一些Angular Materials模块。
由于材料模块声明存在一些问题,即使是最简单的测试“应该创建”,我也遇到了一些问题。我一直在尝试模拟它们,尝试使用jasmineSpies和其他一些东西,但似乎没有任何效果。
这是我目前收到的错误:
Failed: Can't resolve all parameters for MatBottomSheetRef: (?, ?, ?).
这是组件的spec.ts文件:
import {CorporateDataComponent} from "../../common/components/corporate-data/corporate-data.component";
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
import {RouterTestingModule} from "@angular/router/testing";
import {LoginPageComponent} from './login-page.component';
import {LoginModule} from "../login.module";
import {NO_ERRORS_SCHEMA} from "@angular/core";
describe('LoginPageComponent', () => {
let component: LoginPageComponent;
let fixture: ComponentFixture<LoginPageComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [ LoginModule, // among other utilities, contains MaterialModule which imports most of the Angular Material modules
CorporateDataComponent, // Component rendered with MatBottomSheet
RouterTestingModule.withRoutes([{path: 'login', component: LoginPageComponent}]),
],
declarations: [LoginPageComponent],
providers: [{provide: LoginModule, useValue: {}} // MatBottomSheetRef provider"
],
schemas: [ NO_ERRORS_SCHEMA ]
})
.compileComponents()
.then(() => {
fixture = TestBed.createComponent(LoginPageComponent);
component = fixture.componentInstance;
})
}));
fit('should create the component', () => {
expect(component).toBeTruthy();
console.log(component);
});
});
我相当确定问题是测试单元如何声明和使用整个MatBottomSheet
,但是我已经尝试解决这一问题超过一天了,但没有成功。
编辑:因为MatBottomSheetRef
已经通过LoginModule -> MaterialModule -> MatBottomSheetModule
导入,所以我删除了import语句,并将“ MatBottomSheetRef”提供程序替换为“ LoginModule”。这不会删除错误,也不会更改它。情况和以前一样。
尝试导入MatBottomSheetModule
,而不是MatBottomSheetRef
。