angular - Angular2 testaa, onko komponentilla oikea valitsin


Onko Angular2:ssa mitään mahdollisuutta tarkistaa komponentin valitsinta yksikkötestillä?

esim.

@Component({
    selector: 'my-component',
    template: '<p>test</p>'
})
export class MyComponent {}

ja

....
it(`Component should have selector 'my-component'`, () => {
    expect(component.selector).toBe('my-component');
});

Vastaus #1

Reflect-metatietoja käyttää Angularin DI tallentaakseen ja hakeakseen koristetiedot.

On mahdollista saada metatietoja luokasta ja vahvistaa ne:

  const [componentDecorator] = Reflect.getOwnMetadata('annotations', MyComponentClass);

  expect(componentDecorator.selector).toBe('my-component');

Missä Reflect.getMetadata('annotations', ...) palauttaa taulukon luokan annotaatioista.

Tämä vaatii, että reflect-metadata tai core-js/es7/reflect polyfillit ladataan. Tämä polyfill on Angularin edellytys.