W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
測試你的 Angular 應(yīng)用可以幫助你檢查此應(yīng)用是否正常運(yùn)行。
如果你要試用本指南中所講的應(yīng)用,請在瀏覽器中運(yùn)行它或下載并在本地運(yùn)行它。
Angular CLI 會下載并安裝試用 Jasmine 測試框架 測試 Angular 應(yīng)用時所需的一切。
你使用 CLI 創(chuàng)建的項(xiàng)目是可以立即用于測試的。運(yùn)行 CLI 命令 ?ng test
? 即可:
ng test
?ng test
? 命令在監(jiān)視模式下構(gòu)建應(yīng)用,并啟動 karma 測試運(yùn)行器。
它的控制臺輸出一般是這樣的:
10% building modules 1/1 modules 0 active
…INFO [karma]: Karma v1.7.1 server started at http://0.0.0.0:9876/
…INFO [launcher]: Launching browser Chrome …
…INFO [launcher]: Starting browser Chrome
…INFO [Chrome …]: Connected on socket …
Chrome …: Executed 3 of 3 SUCCESS (0.135 secs / 0.205 secs)
最后一行很重要。它表示 Karma 運(yùn)行了三個測試,而且這些測試都通過了。
它還會打開 Chrome 瀏覽器并在“ Jasmine HTML 報(bào)告器”中顯示測試輸出,就像這樣。
大多數(shù)人都會覺得瀏覽器中的報(bào)告比控制臺中的日志更容易閱讀??梢渣c(diǎn)擊某一行測試,來單獨(dú)重跑這個測試,或者點(diǎn)擊一行描述信息來重跑所選測試組(“測試套件”)中的那些測試。
同時,?ng test
? 命令還會監(jiān)聽這些變化。
要查看它的實(shí)際效果,就對 ?app.component.ts
? 做一個小修改,并保存它。這些測試就會重新運(yùn)行,瀏覽器也會刷新,然后新的測試結(jié)果就出現(xiàn)了。
CLI 會為你生成 Jasmine 和 Karma 的配置文件。
不過也可以通過編輯 ?src/
? 目錄下的 ?karma.conf.js
? 和 ?test.ts
? 文件來微調(diào)很多選項(xiàng)。
?karma.conf.js
? 文件是 karma 配置文件的一部分。CLI 會基于 ?angular.json
? 文件中指定的項(xiàng)目結(jié)構(gòu)和 ?karma.conf.js
? 文件,來在內(nèi)存中構(gòu)建出完整的運(yùn)行時配置。
你還可以使用其它的測試庫和測試運(yùn)行器來對 Angular 應(yīng)用進(jìn)行單元測試。每個庫和運(yùn)行器都有自己特有的安裝過程、配置項(xiàng)和語法。
查看 ?src/app
? 文件夾。
CLI 為 ?AppComponent
?生成了一個名叫 ?app.component.spec.ts
? 的測試文件。
測試文件的擴(kuò)展名必須是 ?
.spec.ts
?,這樣工具才能識別出它是一個測試文件,也叫規(guī)約(spec)文件。
?app.component.ts
? 和 ?app.component.spec.ts
? 文件位于同一個文件夾中,而且相鄰。其根文件名部分(?app.component
?)都是一樣的。
請?jiān)谀愕捻?xiàng)目中對任意類型的測試文件都堅(jiān)持這兩條約定。
最好把單元測試規(guī)約文件放到與它們測試的應(yīng)用源碼文件相同的文件夾中:
應(yīng)用的集成測試規(guī)范可以測試跨文件夾和模塊的多個部分之間的交互。它們并不屬于任何一個特定的部分,所以把它們放在任何一個文件旁都很不自然。
最好在 ?tests
?目錄下為它們創(chuàng)建一個合適的文件夾。
當(dāng)然,用來測試那些測試助手的規(guī)約也位于 ?test
?目錄下,緊挨著相應(yīng)的測試助手文件。
避免項(xiàng)目出 BUG 的最佳方式之一,就是使用測試套件。但是很容易忘了一直運(yùn)行它。持續(xù)集成(CI)服務(wù)器讓你可以配置項(xiàng)目的代碼倉庫,以便每次提交和收到 Pull Request 時就會運(yùn)行你的測試。
已經(jīng)有一些像 Circle CI 和 Travis CI 這樣的付費(fèi) CI 服務(wù)器,你還可以使用 Jenkins 或其它軟件來搭建你自己的免費(fèi) CI 服務(wù)器。雖然 Circle CI 和 Travis CI 是收費(fèi)服務(wù),但是它們也會為開源項(xiàng)目提供免費(fèi)服務(wù)。你可以在 GitHub 上創(chuàng)建公開項(xiàng)目,并免費(fèi)享受這些服務(wù)。當(dāng)你為 Angular 倉庫貢獻(xiàn)代碼時,就會自動用 Circle CI 和 Travis CI 運(yùn)行整個測試套件。
本文檔解釋了如何配置你的項(xiàng)目,來運(yùn)行 Circle CI 和 Travis CI,以及如何修改你的測試配置,以便能在這兩個環(huán)境下用 Chrome 瀏覽器來運(yùn)行測試。
.circleci
? 的目錄。config.yml
? 的文件,內(nèi)容如下:version: 2
jobs:
build:
working_directory: ~/my-project
docker:
‐ image: circleci/node:10-browsers
steps:
‐ checkout
‐ restore_cache:
key: my-project-{{ .Branch }}-{{ checksum "package-lock.json" }}
‐ run: npm install
‐ save_cache:
key: my-project-{{ .Branch }}-{{ checksum "package-lock.json" }}
paths:
‐ "node_modules"
‐ run: npm run test -- --no-watch --no-progress --browsers=ChromeHeadlessCI
該配置會緩存 node_modules/
并使用 npm run
來運(yùn)行 CLI 命令,因?yàn)?nbsp;@angular/cli
并沒有裝到全局。要把參數(shù)傳給 npm
腳本,這個單獨(dú)的雙中線(--
)是必須的。
.travis.yml
? 的文件,內(nèi)容如下:language: node_js
node_js:
‐ "10"
addons:
chrome: stable
cache:
directories:
‐ ./node_modules
install:
‐ npm install
script:
‐ npm run test -- --no-watch --no-progress --browsers=ChromeHeadlessCI
它做的事情和 Circle CI 的配置文件一樣,只是 Travis 不用 Chrome,而是用 Chromium 代替。
.gitlab-ci.yml
? 的文件,內(nèi)容如下:image: node:14.15-stretch
variables:
FF_USE_FASTZIP: "true"
cache:
untracked: true
policy: push
key: ${CI_COMMIT_SHORT_SHA}
paths:
‐ node_modules/
.pull_cached_node_modules:
cache:
untracked: true
key: ${CI_COMMIT_SHORT_SHA}
policy: pull
stages:
‐ setup
‐ test
install:
stage: setup
script:
‐ npm ci
test:
stage: test
extends: .pull_cached_node_modules
before_script:
‐ apt-get update
‐ wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
‐ apt install -y ./google-chrome*.deb;
‐ export CHROME_BIN=/usr/bin/google-chrome
script:
‐ npm run test -- --no-watch --no-progress --browsers=ChromeHeadlessCI
這種配置會 在 ?install
?作業(yè)下緩存 ?node_modules/
?,并在 ?test
?作業(yè)中重新使用緩存的 ?node_modules/
?。
.github/workflows
? 的文件夾。main.yml
? 的文件,其內(nèi)容如下:name: CI Angular app through Github Actions
on: push
jobs:
build:
runs-on: ubuntu-latest
steps:
‐ uses: actions/checkout@v2
‐ name: Use Node.js 14.x
uses: actions/setup-node@v1
with:
node-version: 14.x
‐ name: Setup
run: npm ci
‐ name: Test
run: |
npm test -- --no-watch --no-progress --browsers=ChromeHeadlessCI
當(dāng)你要用 CLI 命令 ng test 在自己的環(huán)境中運(yùn)行 CI 測試時,你可能需要再調(diào)整一下配置,以運(yùn)行 Chrome 瀏覽器測試。
這個配置文件是給 Karma(直譯 "報(bào)應(yīng)")測試運(yùn)行器使用的,你必須改為不用沙箱的 Chrome 啟動方式。
這個例子中我們將使用無頭 Chrome。
karma.conf.js
? 中,瀏覽器的緊下方,添加自定義的啟動器,名叫 ChromeNoSandbox。browsers: ['ChromeHeadlessCI'],
customLaunchers: {
ChromeHeadlessCI: {
base: 'ChromeHeadless',
flags: ['--no-sandbox']
}
},
現(xiàn)在,運(yùn)行下列帶有 ?--no-sandbox
? 標(biāo)志的命令:
ng test --no-watch --no-progress --browsers=ChromeHeadlessCI
注意:
目前,如果你正運(yùn)行在 Windows 中,還要包含 ?--disable-gpu
? 標(biāo)志。參閱 crbug.com/737678。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: