Ошибка углового тестирования Не обнаружена: Не обнаружена (в обещании): Ошибка типа: Не удается прочитать свойства null (чтение «параметров»)

#angular #routes #karma-jasmine #angular-test

Вопрос:

У меня проблема с тестированием моего компонента. Основная проблема возникает, когда я запускаю fixture.DetectChanges(). Когда я его не запускаю, все тесты проходят без каких-либо проблем. Это и есть тесты:

 describe("simple HTML", () =gt; {  // beforeEach(() =gt; {  // fixture.detectChanges();  // });  it('should be created', () =gt; {  expect(component).toBeTruthy();    });   it("Component should render html h3 tag with title Icons amp; Measuerements", () =gt; {  const h3Ele = fixture.debugElement.query(By.css(".mainTitle"));  expect(h3Ele.nativeElement.textContent).toBe("Icons amp; Measurements")  })  it("Should render h3 tag with text 'Files from blower:' and span with information about current container", () =gt; {  const h3Ele = fixture.debugElement.query(By.css(".headerh3"))  expect(h3Ele.nativeElement.innerHTML).toBe("Files from blower: lt;span _ngcontent-a-c391=""gt;lt;/spangt;")  })  it("Should display current blower that user is at the moment in span", async () =gt; {  const h3Ele = fixture.debugElement.query(By.css(".headerh3 span"))  // component.lowBlowId = "test_id"  // fixture.detectChanges()  debugger      })  }) 

Но затем я запускаю эту функцию DetectChanges (), у меня есть эта ошибка: введите описание изображения здесь

Я думаю, что проблема может быть в параметрах одной функции, которую я создал в файле ts.

 async gettingLowBlowId() {  this.route.parent.params.subscribe((params) =gt; {  this.lowBlowId = params.blower_id  })  } 

Это моя настройка в тестах:

 let component: IconsInVisualizationComponent;  let fixture: ComponentFixturelt;IconsInVisualizationComponentgt;;  let administrationServiceMock: AdnimistrationSiteService;  let visualisationFileStorageManagerServiceMock: VisualisationFileStorageManagerService   beforeEach(async () =gt; {  administrationServiceMock = jasmine.createSpyObj("AdnimistrationSiteService", ["getAllFilesWithIcons", "changeOrDeleteIcon", "getSensorsForMapping", "deleteSensorsAttachToIcon"])  visualisationFileStorageManagerServiceMock = jasmine.createSpyObj("VisualisationFileStorageManagerService", ["getFoldersList"])   await TestBed.configureTestingModule({  imports: [  HttpClientModule,  MatDialogModule,  BrowserAnimationsModule,   RouterTestingModule,  MatSnackBarModule,  MatTableModule,  ],  providers: [  {provide: AdnimistrationSiteService, useValue: administrationServiceMock},  {provide: VisualisationFileStorageManagerService, useValue: visualisationFileStorageManagerServiceMock},  ],  declarations: [ IconsInVisualizationComponent ],  schemas: [CUSTOM_ELEMENTS_SCHEMA]  })  .compileComponents();  });   beforeEach(() =gt; {  fixture = TestBed.createComponent(IconsInVisualizationComponent);  component = fixture.componentInstance;  }); 

Можете ли вы помочь мне с этим вопросом?

Ответ №1:

В ваших провайдерах вам, вероятно, нужно добавить ActivatedRoute следующее :

 providers: [  ...,  {  provide: ActivatedRoute,  useValue: {  parent: {  params: of({ blower_id: 2 })  }  }  } ],  

Комментарии:

1. Я добавил ответ на этот комментарий в качестве ответа на свой вопрос, потому что я не хотел добавлять фрагмент кода