#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. Я добавил ответ на этот комментарий в качестве ответа на свой вопрос, потому что я не хотел добавлять фрагмент кода