Я пытаюсь научиться кодировать с помощью Angular, и у меня возникла проблема.Я создаю приложение для себя, и я только что реализовал Angular Material Dialog.Я положил это в сервис обертки, и все, кажется, хорошо.Поэтому в компоненте, который я вызываю Wrapper Service, чтобы вызвать модальное состояние, например ...
public assignInstrument(instrument: any): void {
this.modalDialogWrapperService.openAssignmentWindow({
product: 'instrument',
type: instrument.type,
serial: instrument.serial,
id: instrument.id
});
}
метод службы выглядит так: обратите внимание, я передаю имя компонента, который я хочу вызвать в модальном окне
openAssignmentWindow(instrument) {
const dialogRef = this.dialog.open(ChangeAssignmentComponent, {
data: instrument,
width: '693px',
height: '498px'
});
dialogRef.afterClosed().subscribe(() => {});
});
}
Все отлично работает!Но, как хороший разработчик, я должен написать модульные тесты ... поэтому для тестирования моего компонента у меня есть следующий тест (я включил, как я высмеиваю Сервис и некоторый другой код, чтобы создать впечатление о тестовом файле)
let modalDialogWrapperServiceSpy: jasmine.SpyObj<ModalDialogWrapperService>;
const mockModalDialogWrapperService = jasmine.createSpyObj('ModalDialogWrapperService', ['openAssignmentWindow']);
mockModalDialogWrapperService.openAssignmentWindow.and.returnValue({});
TestBed.configureTestingModule({
imports: [...],
declarations: [...],
providers: [{
provide: ModalDialogWrapperService,
useValue: mockModalDialogWrapperService
}]
}).compileComponents();
beforeEach(() => {
fixture = TestBed.createComponent(InstrumentsPageComponent);
modalDialogWrapperServiceSpy = TestBed.get(ModalDialogWrapperService);
component = fixture.componentInstance;
fixture.detectChanges();
})
describe('assignInstrument', () => {
it('should call the Modal Dialog Service', () => {
component.assignInstrument({});
expect(modalDialogWrapperServiceSpy.openAssignmentWindow).toHaveBeenCalledTimes(1);
});
});
Этот тест не пройден!С ошибкой «Ошибка: не найдена фабрика компонентов для ChangeAssignmentComponent. Вы добавили ее в @ NgModule.entryComponents» - это кажется странным, так как в моем файле app.module я объявляю «ChangeAssignmentComponent» в элементах entryComponents и объявлениях массивов?Я в замешательстве - кто-нибудь знает, что я могу делать не так?