我有一个要在Angular material MDDialog中使用的组件:

@Component({
  ...
})
export class MyComponent {

  constructor(@Inject(MAT_DIALOG_DATA) public data: any, public dialogRef: 
MdDialogRef<MyComponent>) {
...
  }


}

我试图用Jasmine进行单元测试:

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

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

  ...
  
});

不幸的是,我得到了以下错误:

错误:InjectionToken MdDialogData没有提供程序!

SharedTestingModule导入和导出自定义Angular material 模块,该模块本身导入和导出MdDialogModule.

我怎样才能摆脱这个错误?

非常感谢!

Angular 4.2.4
Angular Material 2.0.0-beta.7
Jasmine 2.5.3

推荐答案

我补充说:

providers: [
    { provide: MAT_DIALOG_DATA, useValue: {} },
    { provide: MdDialogRef, useValue: {} }
]

它是有效的:)

感谢您的帮助@Methgaard!

Angular相关问答推荐

Angular 17@在大小写时切换多个值

Primeng 12Angular 12自定义库:错误符号字段集声明于...在编译保存后未从Primeng/fieldset中导出

命令不起作用的初始菜单项

如何在ANGLING v17中使用鞋带样式组件?

如果过滤器在rxjs流中触发,则返回空数组

使用jsPDF生成带有图像的PDF时出现灰色条纹

从Angular 前端访问ASP.NET Core 8 Web API时出现CORS错误

如何在 Angular 中每 x 秒从 REST api 加载数据并更新 UI 而不会闪烁?

PrimeNG 避免在同一位置使用不同键的 cogo toast 重叠

在 Angular 14 中找不到命名空间google

如何在 Angular 2 模板中使用枚举

Angular 2+ 一次性绑定

运行 npm 测试(Angular 2 单元测试)后无法读取未定义的属性 subscribe

Angular 5 国际化

unexpected token < 错误

单元测试错误:无法从同步测试中调用 Promise.then

Angular 应用程序必须在新部署后清除缓存

Angular2 路由错误:cannot find primary outlet to load 'HomePage'

如何在 Angular 8 应用程序中支持 Internet Explorer?

如何在 Angular2 中取消订阅