具有材料依赖性的角单元测试

问题描述 投票:0回答:1

简介:

我有一个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”。这不会删除错误,也不会更改它。情况和以前一样。

angular unit-testing jasmine karma-jasmine karma-runner
1个回答
0
投票

尝试导入MatBottomSheetModule,而不是MatBottomSheetRef

© www.soinside.com 2019 - 2024. All rights reserved.