1. ホーム
  2. angular

[解決済み] Angular Material と Jasmine : " InjectionToken MdDialogData のプロバイダがない! "

2023-08-01 06:17:44

質問

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です。