angular4-testing/project-manager/src/app/login/login.component.spec.ts

55 lines
1.8 KiB
TypeScript
Raw Normal View History

2017-04-04 04:14:07 +02:00
import {TestBed} from "@angular/core/testing";
import {LoginComponent} from "./login.component";
import {RouterTestingModule} from "@angular/router/testing";
import {LoginService} from "../services/login-service/login-service";
import {FormsModule} from "@angular/forms";
2017-04-17 08:26:39 +02:00
import {MockLoginService} from "../mocks/mock-login-service";
2017-04-04 04:14:07 +02:00
import Spy = jasmine.Spy;
2017-04-18 00:50:52 +02:00
/**
* Test für die LoginComponent Klasse
* für Formulareingabe und Service Interaktion
*
* @author FHartwich
*/
2017-04-16 23:21:41 +02:00
describe('Login Component UI Driven Form Test with Spy', () => {
2017-04-04 04:14:07 +02:00
beforeEach(() => {
TestBed.configureTestingModule({
imports: [FormsModule, RouterTestingModule.withRoutes([])],
declarations: [LoginComponent],
providers: [
2017-04-17 08:26:39 +02:00
{provide: LoginService, useClass: MockLoginService}
2017-04-04 04:14:07 +02:00
],
})
});
it('should be possible to request login', () => {
const inputUser = 'testuser';
const inputPass = 'testpass';
const loginFixture = TestBed.createComponent(LoginComponent);
const loginInstance = loginFixture.componentInstance;
const loginElement = loginFixture.nativeElement;
loginFixture.autoDetectChanges(true);
// Login ausfuellen und absenden
2017-04-17 08:26:39 +02:00
let service = loginFixture.debugElement.injector.get(LoginService);
// Spy anmelden, die eigentliche Methode wird nicht mehr aufgerufen
const spy = spyOn(service, 'login');
2017-04-04 04:14:07 +02:00
2017-04-17 08:26:39 +02:00
// Formular Eingabe
loginElement.querySelector('div /deep/ div > #inputEmail').value = inputUser;
loginElement.querySelector('div /deep/ div > #inputPassword').value = inputPass;
// Trigger Submit - nicht möglich über click() oder HTTPNode submit()
// daher in Comp '@ViewChild(NgForm)' benoetigt
loginInstance.form.ngSubmit.emit();
2017-04-04 04:14:07 +02:00
2017-04-17 08:26:39 +02:00
// Spy auswerten
expect(spy).toHaveBeenCalledWith(inputUser, inputPass);
2017-04-04 04:14:07 +02:00
});
});