Angular 測試庫
Angular Testing Library
建構於 DOM Testing Library
之上,加入了用於操作 Angular 元件的 API。從 ATL 版本 17 開始,您還需要安裝 @testing-library/dom
- npm
- Yarn
npm install --save-dev @testing-library/angular @testing-library/dom
yarn add --dev @testing-library/angular @testing-library/dom
或者,您可以使用 ng add
命令。這會設定您的專案以使用 Angular 測試庫,其中也包含 @testing-library/dom
的安裝。
ng add @testing-library/angular
問題
您想要為您的 Angular 元件撰寫可維護的測試。作為此目標的一部分,您希望您的測試避免包含元件的實作細節,而是專注於讓您的測試給予您預期的信心。作為其中一部分,您希望您的測試基礎能夠長期維護,以便重構您的元件(變更實作而非功能)不會破壞您的測試並拖慢您和您的團隊的速度。
此解決方案
Angular Testing Library
是一個非常輕量的 Angular 元件測試解決方案。它在 DOM Testing Library
之上提供輕量的實用函數,以鼓勵更好的測試實踐。它的主要指導原則是:
因此,您的測試將使用實際的 DOM 節點,而不是處理已渲染的 Angular 元件實例。此程式庫提供的工具可以讓您以使用者相同的方式查詢 DOM。透過標籤文字尋找表單元素(就像使用者一樣),透過文字尋找連結和按鈕(就像使用者一樣)。它還提供了一種建議的方式,可以透過 data-testid
尋找元素,作為文字內容和標籤沒有意義或不實際的元素的「逃生出口」。
這個程式庫鼓勵您的應用程式更易於存取,並讓您的測試更接近使用者使用您元件的方式,這讓您的測試更有信心,您的應用程式在真實使用者使用時能夠正常運作。
Angular Testing Library
- 重新匯出
DOM Testing Library
的query
和fireEvent
實用函數。 - 封裝您元件的
fireEvent
函數,以便在事件發生後自動呼叫detectChanges()
- 與測試框架無關,它可以在每個測試框架上執行