2017-04-10 3 views
0

So habe ich Angular2 Komponente, die wie folgt aussieht:Wie kann ich während des Testens auf Angular2-Komponenten zugreifen?

import {Component, OnInit} from '@angular/core'; 

@Component({ 
    selector: 'login', 
    templateUrl: './login.component.html', 
    styleUrls: ['./login.component.css'] 
}) 
export class LoginComponent implements OnInit { 
    user = { 
     username: '', 
     password: '' 
    }; 

    constructor() { 
    } 

    login() { 
    } 

    ngOnInit() { 
    } 

} 

Und ich habe Testsuite (nur relevanten Teil zeigte) ein:

describe('LoginComponent',() => { 
    let component: LoginComponent; 
    let fixture: ComponentFixture<LoginComponent>; 

    beforeEach(async(() => { 
    TestBed.configureTestingModule({ 
     declarations: [ LoginComponent ], 
     imports: [FormsModule] 
    }) 
    .compileComponents(); 
    })); 

    beforeEach(() => { 
    fixture = TestBed.createComponent(LoginComponent); 
    component = fixture.componentInstance; 
    fixture.detectChanges(); 
    }); 
it('should define method login()',() => { 
    console.log(component); //access data from component 
    console.log(fixture.debugElement.nativeElement); //access dom of component 
    }); 

}); 

Und ich versuche Test zu schreiben, für Diese Funktion login() verwendet Karma und Jasmine. Aber ich kann einfach nicht auf die Login-Methode zugreifen. Ich habe mir viele Seiten angeschaut und die meisten zeigen Beispiele, wie man auf Eigenschaften zugreift, aber niemals Methoden. Mache ich etwas konzeptionell falsch, indem ich versuche, auf Klassenmethoden in der Testsuite oder etwas zuzugreifen? (Ich bin nicht so gut im Test)

+1

Sie möchten die Methoden verspotten. Ich habe eine ähnliche Frage hier gestellt: http://stackoverflow.com/questions/40915547/angular-2-jasmine-how-to-test-a-function-of-a-komponente – Bhetzie

+1

@Bhetzie Ja, ich sah diesen Thread während ich suchte, aber das ist ein Teil, den ich nicht verstehe, warum muss ich es so machen? Ich meine, warum kann ich diese Methode nicht direkt aus dem Unterricht anrufen? Etwas wie: 1. Eingang gesetzt // wenn 2. Aufruf der Funktion direkt Scheck 3. benötigt, wenn die Ergebnisse sind das, was ich erwarte Bin ich im Allgemeinen etwas offensichtlich über das Testen fehlt? – Marko

Antwort

0

Die Komponente, die Sie in der ersten vor jedem zugewiesen ist die Instanz der LoginComponent, die Winkel verwendet see here. Da die Anmeldung öffentlich ist, sollten Sie in der Lage sein, die Methode direkt aufzurufen, d. H. component.login.

Verwandte Themen