Attualmente sto mettendo insieme alcune best practice per testare le app Angular 2 a livello di componente.Test Angular2: Qual è la differenza tra un oggetto DebugElement e un oggetto NativeElement in ComponentFixture?
Ho visto alcuni tutorial interrogare l'oggetto NativeElement di un dispositivo per i selettori e simili, ad es.
it('should render "Hello World!" after click', async(() => {
builder.createAsync(HelloWorld).then((fixture: ComponentFixture<HelloWorld>) => {
fixture.detectChanges();
let el = fixture.nativeElement;
el.querySelector('h1').click();
fixture.detectChanges();
expect(el.querySelector('h1')).toHaveText('Hello World!');
});
}));
Tuttavia, in juliemr's Angular 2 test seed si accede al NativeElement attraverso un oggetto padre DebugElement.
it('should render "Hello World!" after click', async(() => {
builder.createAsync(HelloWorld).then((fixture: ComponentFixture<HelloWorld>) => {
fixture.detectChanges();
let compiled = fixture.debugElement.nativeElement;
compiled.querySelector('h1').click();
fixture.detectChanges();
expect(compiled.querySelector('h1')).toHaveText('Hello World!');
});
}));
Ci sono casi specifici usereste debugElement.nativeElement di un appuntamento fisso sulla sua nativeElement?
Cheers - quindi suppongo che se non sto usando nessuno dei membri di DebugElement eccetto nativeElement è probabilmente più leggibile andare con componentFixture.nativeElement allora. – dgkane
'nativeElement' ti aiuta solo quando vuoi investigare sul DOM (sono attributi, classi, ... impostati o cancellati o forse inviano eventi DOM). Quando si desidera analizzare lo stato delle parti dell'applicazione Angular2 (componenti, direttive, ...) è necessario 'DebugElement' –