typescript - Cum să scrii un caz de test pentru modificările input-ului în Angular
Salut, dezvolt o aplicație folosind Angular și TypeScript.
Următorul este codul șablon:
<input type="text" placeholder="Search Results" (input)="searchInput($event)">
și codul meu TypeScript referitor la metoda searchInput este:
searchInput(event: Event & { target: HTMLInputElement}) {
const { value } = event.target;
this.value = value;
// calling other method to reset values
}
Mă întrebam cum să scriu cazuri de testare pentru input în fișierul meu spec.ts.
describe('Component', () => {
let component: Component;
let fixture: ComponentFixture<Component>;
const event = Event; // Is this fine ?
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
AppModule
],
providers: [
]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(Component);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('searchInput() ', () => {
// how to approach
});
});
Vă rugăm să furnizați un mod în care voi aborda scrierea cazurilor de testare.
Răspuns #1
Iată o modalitate de a scrie un test simplu.
Ce face:
- Creează componenta
- Verifică dacă valoarea implicită pentru
valueeste falsă - Găsește elementul de input HTML după CSS (este posibil să trebuiască să fii mai specific aici, în funcție de șablonul tău)
- Setează
valoareaelementului de input și declanșează uneveniment de input - Asigură-te că valoarea lui
valuea fost actualizată corect
Cod (amintiți-vă să importați By):
...
import { By } from '@angular/platform-browser';
...
it('searchInput should update value when input changes', async(() => {
const fixture = TestBed.createComponent(AppComponent);
expect(fixture.debugElement.nativeElement.value).toBeFalsy()
const el: HTMLInputElement = fixture.debugElement.query(By.css('input')).nativeElement;
const testValue = 'some_value';
el.value = testValue;
el.dispatchEvent(new Event('input'));
expect(fixture.componentInstance.value).toEqual(testValue);
}));
