Czytałem oficjalną dokumentację Angular2 do testowania jednostkowego (https://angular.io/docs/ts/latest/guide/testing.html), ale mam problem z ustawieniem wartości pola wejściowego komponentu, aby odzwierciedlić ją we właściwości komponentu (powiązanej przez ngModel). Ekran działa dobrze w przeglądarce, ale w teście jednostki nie mogę ustawić wartości pól.Wartość wejściowa testu jednostkowego Angular2
Używam poniżej kodu. "urządzenie" zostało poprawnie zainicjowane, ponieważ inne testy działają poprawnie. "comp" jest instancją mojego komponentu, a pole wejściowe jest przypisane do "user.username" przez ngModel.
it('should update model...', async(() => {
let field: HTMLInputElement = fixture.debugElement.query(By.css('#user')).nativeElement;
field.value = 'someValue'
field.dispatchEvent(new Event('input'));
fixture.detectChanges();
expect(field.textContent).toBe('someValue');
expect(comp.user.username).toBe('someValue');
}));
Moja wersja Angular2: "@angular/core": "2.0.0"
kopalni nie było pracować nawet bez pierwszy 'oczekiwać' rzeczywistości. Ale twoja działa na szczęście z wdzięcznością, nie mam pojęcia dlaczego tak, zakładam ją, ponieważ jest po rozwiązaniu whenStable()? Dzięki za pomoc. – Zyga
Jeśli konfigurowałeś komponent w przedtem, tworząc asynchronię beforeEach, wywołanie fixture.detectChanges po utworzeniu komponentu prawdopodobnie zadziałałoby z powyższym kodem bez potrzeby wywoływania funkcji ifStable. Jeśli zrobiłeś to z powyższym kodem, możesz pozbyć się wszystkiego poza tym, co jest w tym wywołaniu. Myślę, że to też zadziała. Asynchronizacja beforeEach powinna w zasadzie zrobić to samo, co zrobiłaby funkcja WhenStable, czyli czekać na zakończenie zadań asynchronicznych przed wyjściem z beforeEach –