角度材質の2つのコンポーネントからMdDialog
をテストする問題があります。問題は、私のコンポーネント(MdDialog
を使用している)がエントリコンポーネントであり、現在のTestBed
構成でテストできないということです。現在のTestBed
構成にはentryComponent
プロパティがありません。角度カルマ - エラー:MdDialogRefのプロバイダがありません
私は(私は、テストのためNgModuleを作成し、私が思いついたテストベッドの設定や他のものを上書き)ここにすべてのオプションを試してみました:https://github.com/angular/angular/issues/10760
私も見に角度材料2 MdDialog
コードを見てきましたどのようにテストを行うが、私は成功しませんでした。
私はいずれも成功していません。誰でもアプリケーションでMdialogコンポーネントのテストに成功しましたか?実装したオプションを共有できますか?彼らはテストのための本当のモジュールを作成し、テストベッドでそれをインポートするダイアログをテストする方法を材料のソースコードで
#Component
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { MdDialogRef } from '@angular/material';
import { MessageService } from './../message.service';
import { MessageRequest } from './../message.model';
import { AuthenticationService } from './../../core/authentication/authentication.service';
import { AuthenticationResponse } from './../../core/authentication/authentication.model';
@Component({
selector: 'app-message-add',
templateUrl: './message-add.component.html',
styleUrls: ['./message-add.component.scss']
})
export class MessageAddComponent implements OnInit {
messageAddForm: FormGroup;
currentUser: AuthenticationResponse;
disabled: boolean;
constructor(private fb: FormBuilder,
private dialog: MdDialogRef<MessageAddComponent>,
private messageService: MessageService,
private authService: AuthenticationService) {
this.messageAddForm = fb.group({
'id': ['', Validators.required],
'txt': ['', Validators.required]
});
this.currentUser = this.authService.getUser();
this.disabled = true;
}
ngOnInit() {
}
onDateChange(value: any) {
}
onCancel() {
this.dialog.close();
}
onMessageAdd() {
const newMessage: MessageRequest = {
user: this.currentUser.userId,
message: {
id: this.messageAddForm.value.id,
txt: this.messageAddForm.value.txt,
}
};
this.messageService.add(newMessage).subscribe((response) => {
this.dialog.close();
}, (error) => {
console.log(`messageService.save: ${JSON.stringify(error)}`);
});
}
}
#Component Test
/* tslint:disable:no-unused-variable */
import { async, ComponentFixture, TestBed, inject } from '@angular/core/testing';
import { BrowserModule, By } from '@angular/platform-browser';
import { CommonModule } from '@angular/common';
import { Component, DebugElement, NgModule } from '@angular/core';
import { ReactiveFormsModule, FormsModule } from '@angular/forms';
import { BrowserDynamicTestingModule } from '@angular/platform-browser-dynamic/testing';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import {
MdButtonModule,
MdToolbarModule,
MdInputModule,
MdMenuModule,
MdSelectModule,
MdIconModule,
MdCardModule,
MdDialogModule,
MdOptionModule,
MdDialog,
MdDialogRef,
} from '@angular/material';
import { Md2Module } from 'md2';
import { MessageAddComponent } from './message-add.component';
describe('MessageAddComponent',() => {
let component: MessageAddComponent;
let fixture: ComponentFixture<MessageAddComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
CommonModule,
ReactiveFormsModule,
FormsModule,
BrowserAnimationsModule,
MdButtonModule,
MdToolbarModule,
MdInputModule,
MdMenuModule,
MdSelectModule,
MdIconModule,
MdCardModule,
MdDialogModule,
MdOptionModule,
Md2Module
],
providers: [],
declarations: [MessageAddComponent]
}).overrideModule(BrowserDynamicTestingModule, {
set: {
entryComponents: [MessageAddComponent],
},
});
}));
beforeEach(() => {
fixture = TestBed.createComponent(MessageAddComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create',
inject([MessageAddComponent], (notificationAddComponent) => {
expect(notificationAddComponent).toBeTruthy();
}));
});
ユニットテストまたは実装を実際に探しているものは何ですか? – Aravind
私はmdDialogRefを使って表示用のデータを取得し、それを呼び出し側に返すコンポーネントを持っています。私はMdDialogでコンポーネントをテストする方法を探しています。テストを実行すると、「エラー:MdDialogRefのプロバイダがありません」というメッセージが表示されます。私が言ったように、私はこのリンクのオプションを試しました:https://github.com/angular/angular/issues/10760 – btinoco
あなたのコンポーネントコードと対応するユニットテストコード – Aravind