Я просто пытаюсь написать простой жасмин спецификацию для основного угловых 2 компонента, и я получаю эту ошибку:Нет кормильца ошибку маршрутизатора в Жасмине не спекуляция
zone.js:388 Unhandled Promise rejection: No provider for Router! ; Zone: ProxyZone ; Task: Promise.then ; Value:
Как это исправить?
Мой тест жасмин:
import 'zone.js/dist/long-stack-trace-zone.js';
import 'zone.js/dist/async-test.js';
import 'zone.js/dist/fake-async-test.js';
import 'zone.js/dist/sync-test.js';
import 'zone.js/dist/proxy.js';
import 'zone.js/dist/jasmine-patch.js';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import {
BrowserDynamicTestingModule,
platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing';
import { By } from '@angular/platform-browser';
import { DebugElement } from '@angular/core';
import { MiddleRowComponent } from './middle-row.component';
import { CirclesComponent } from './circles.component';
import { ButtonComponent } from '../../shared/subcomponents/button.component';
import { Router } from '@angular/router';
let comp: MiddleRowComponent;
let fixture: ComponentFixture<MiddleRowComponent>;
let de: DebugElement;
let el: HTMLElement;
describe('MiddleRowComponent',() => {
var fixture: any;
var comp: any;
beforeAll(() => {
TestBed.resetTestEnvironment();
TestBed.initTestEnvironment(BrowserDynamicTestingModule,
platformBrowserDynamicTesting());
});
beforeEach((done) => {
TestBed.configureTestingModule({
declarations: [MiddleRowComponent, CirclesComponent, ButtonComponent], // declare the test component
providers: [Router]
}).compileComponents().then(() => {
fixture = TestBed.createComponent(MiddleRowComponent);
comp = fixture.componentInstance; // MiddleRowComponent test instance
// query for the title <h1> by CSS element selector
de = fixture.debugElement.query(By.css('h1'));
el = de.nativeElement;
done();
});
});
it('should display original title',() => {
fixture.detectChanges();
expect(el.textContent).toContain(comp.word);
});
it('should display a different test title',() => {
comp.word = 'Test Title';
fixture.detectChanges();
expect(el.textContent).toContain('Test Title');
});
});
Edit:
Я вижу свою спецификацию действительно использует маршрутизатор. Где добавить маршрутизатор в качестве поставщика?
import { Component } from '@angular/core';
import { Router } from '@angular/router';
@Component({
selector: 'middle-row',
templateUrl: 'app/landing-page/subcomponents/middle-row.component.html',
styleUrls: ['app/landing-page/subcomponents/middle-row.component.css']
})
export class MiddleRowComponent {
public word: string = "stuff";
private isGreen: boolean;
constructor(private router: Router) { };
private tryNowClick(): void {
this.router.navigateByUrl('/find');
};
private onWordChanged(event: any): void {
this.isGreen = event.isGreen;
this.word = event.word;
}
}
Спасибо. Для чего нужен комментарий? Звучит как бросание ошибки, если не вызвано, что может быть полезно – BeniaminoBaggins
Я получаю сообщение об ошибке в intellij, поэтому комментарий просто подавляет неразрешенные функции, которые бросает IDE. Возможно, вам не нужна эта строка – Bhetzie