Wie spotze ich das Klickereignis einer Funktion in Angular 2? Für meine Startseite Component ich habe:Angular 2 Jasmine So testen Sie eine Funktion einer Komponente
Startseite Component
import { Component } from '@angular/core';
import { Router } from '@angular/router';
@Component({
moduleId: module.id,
templateUrl: 'home.component.html',
styleUrls: ['home.component.css'],
selector: 'home',
})
export class HomeComponent {
constructor(private router: Router) {
}
redirectToUpload() {
this.router.navigate(['/upload']);
}
redirectToAbout() {
this.router.navigate(['/about']);
}
}
Startseite Component spec
import { ComponentFixture, TestBed, async } from '@angular/core/testing';
import { HomeComponent } from './home.component';
import { DebugElement } from '@angular/core';
import { By } from '@angular/platform-browser';
import { Router } from '@angular/router';
import { HomeModule } from './home.module';
import { RouterLinkStubDirective, RouterOutletStubComponent } from '../../../test/router-stubs';
import { RouterModule } from '@angular/router';
export function main() {
let de: DebugElement;
let comp: HomeComponent;
let fixture: ComponentFixture<HomeComponent>;
let mockRouter:any;
class MockRouter {
//noinspection TypeScriptUnresolvedFunction
navigate = jasmine.createSpy('navigate');
}
describe('Home component',() => {
// preparing module for testing
beforeEach(async(() => {
mockRouter = new MockRouter();
TestBed.configureTestingModule({
imports: [HomeModule],
}).overrideModule(HomeModule, {
remove: {
imports: [ RouterModule ],
},
add: {
declarations: [ RouterLinkStubDirective, RouterOutletStubComponent ],
providers: [ { provide: Router, useValue: mockRouter }],
}
}).compileComponents().then(() => {
fixture = TestBed.createComponent(HomeComponent);
comp = fixture.componentInstance;
});
}));
tests();
});
function tests() {
beforeEach(() => {
// trigger initial data binding
fixture.detectChanges();
de = fixture.debugElement.query(By.css('h1'));
});
it('can instantiate Home',() => {
expect(comp).not.toBeNull();
});
it('should have expected <h1> text',() => {
fixture.detectChanges();
const h1 = de.nativeElement;
expect(h1.innerText).toMatch("Home");
});
}
}
Ich möchte redirectToUpload() und redirectToAbout() testen. Wie würde ich den Klick verspotten und sicherstellen, dass die Weiterleitung für den angegebenen Link ist?
testen Können wir die oben genannten Schritte aufrufen, um einen Klick zu simulieren? – Aditya