2017-05-25 77 views
2

Angular2有沒有可能通過單元測試驗證組件選擇器?Angular2測試組件是否有合適的選擇器

例如

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

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

回答

2

Reflect元數據用於通過角DI來存儲和檢索數據的裝飾。

它可以從類獲取元數據,並聲稱它:

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

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

Reflect.getMetadata('annotations', ...)返回類註解的數組。

這需要reflect-metadatacore-js/es7/reflect要加載的polyfills。這個polyfill是Angular的先決條件。

+0

我應該導入什麼才能使用'Reflect.getOwnMetadata'方法? – piotrgajow

+0

您需要加載https://www.npmjs.com/package/reflect-metadata填充。這是Angular的先決條件,所以它很可能已經存在。 – estus

+0

我不得不從'reflect-metadata';'添加'import {}。你能將它添加到你的答案嗎?那麼我會接受它。你能否告訴我爲什麼它必須是'[componentDecorator]'而不僅僅是'componentDecorator'? – piotrgajow