怎么在Angular CLI中進(jìn)行單元測(cè)試?針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。
成都一家集口碑和實(shí)力的網(wǎng)站建設(shè)服務(wù)商,擁有專業(yè)的企業(yè)建站團(tuán)隊(duì)和靠譜的建站技術(shù),10多年企業(yè)及個(gè)人網(wǎng)站建設(shè)經(jīng)驗(yàn) ,為成都上千余家客戶提供網(wǎng)頁(yè)設(shè)計(jì)制作,網(wǎng)站開發(fā),企業(yè)網(wǎng)站制作建設(shè)等服務(wù),包括成都營(yíng)銷型網(wǎng)站建設(shè),品牌網(wǎng)站制作,同時(shí)也為不同行業(yè)的客戶提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作的服務(wù),包括成都電商型網(wǎng)站制作建設(shè),裝修行業(yè)網(wǎng)站制作建設(shè),傳統(tǒng)機(jī)械行業(yè)網(wǎng)站建設(shè),傳統(tǒng)農(nóng)業(yè)行業(yè)網(wǎng)站制作建設(shè)。在成都做網(wǎng)站,選網(wǎng)站制作建設(shè)服務(wù)商就選成都創(chuàng)新互聯(lián)。單元測(cè)試.
angular cli使用karma進(jìn)行單元測(cè)試.
首先執(zhí)行ng test --help或者ng test -h查看幫助.
執(zhí)行測(cè)試的話就執(zhí)行ng test即可, 它會(huì)執(zhí)行項(xiàng)目里所有的.spec.ts文件.
而且它還會(huì)檢測(cè)文件的變化, 如果文件有變化, 那么它會(huì)重新執(zhí)行測(cè)試.
它應(yīng)該在單獨(dú)的終端進(jìn)程中執(zhí)行.
首先創(chuàng)建一個(gè)angular項(xiàng)目, 帶路由的:
ng new sales --routing
創(chuàng)建好項(xiàng)目后, 直接執(zhí)行命令測(cè)試:
ng test
然后會(huì)彈出一個(gè)頁(yè)面, 就是測(cè)試的結(jié)果數(shù)據(jù).
下面我再添加幾個(gè)components 和 一個(gè) admin module:
ng g c person ng g c order ng g m admin --routing ng g c admin/user ng g c admin/email
然后配置一下路由, 最重要得到這個(gè)效果:
這時(shí)我重新執(zhí)行一下ng test:
盡管程序運(yùn)行沒有問題, 但是測(cè)試還是出現(xiàn)了問題: router-outlet is not an angular component.
可以看一下spec list:
這時(shí)因?yàn)檫\(yùn)行測(cè)試的時(shí)候, admin模塊是獨(dú)立運(yùn)行的, 所以該模塊并沒有引用Router模塊, 所以無(wú)法識(shí)別router-outlet.
那么如何解決這個(gè)問題?
打開admin.component.spec.ts:
把這句話填上, 然后就沒有錯(cuò)誤了:
NO_ERRORS_SCHEMA告訴angular忽略那些不識(shí)別的元素或者元素屬性.
--code-coverage -cc 代碼覆蓋率報(bào)告, 默認(rèn)這個(gè)是不開啟的, 因?yàn)樯蓤?bào)告的速度還是比較慢的.
--colors 輸出結(jié)果使用各種顏色 默認(rèn)開啟
--single-run -sr 執(zhí)行測(cè)試, 但是不檢測(cè)文件變化 默認(rèn)不開啟
--progress 把測(cè)試的過程輸出到控制臺(tái) 默認(rèn)開啟
--sourcemaps -sm 生成sourcemaps 默認(rèn)開啟
--watch -w 運(yùn)行測(cè)試一次, 并且檢測(cè)變化 默認(rèn)開啟
ng test 就是運(yùn)行測(cè)試, 并且如果文件有變化, 就會(huì)重新運(yùn)行測(cè)試.
使用ng test -sr或者ng test -w false 執(zhí)行單次測(cè)試
測(cè)試代碼覆蓋率:
ng test --cc 的報(bào)告默認(rèn)是生成在/coverage文件夾下, 但是可以通過修改.angular-cli.json里面的屬性進(jìn)行修改.
下面生成代碼覆蓋率報(bào)告:
ng test -sr -cc
通常是配合-sr參數(shù)使用的(運(yùn)行一次測(cè)試).
然后會(huì)在項(xiàng)目的coverage文件夾里生成一些文件:
直接打開index.html:
可以看到都是100%, 這是因?yàn)槲覜]有寫任何代碼.
然后我在user component里面添加一些代碼:
再運(yùn)行一次 ng test --sr -cc:
可以看到這部分代碼并沒有覆蓋到.
如果我把代碼里到 canGetUsers改為true:
再次執(zhí)行ng test --sr -cc
可以看到這次代碼覆蓋率變化了:
只有catch部分沒有覆蓋到.
我認(rèn)為代碼覆蓋率這個(gè)內(nèi)置功能是非常好的.
Debug單元測(cè)試.
首先執(zhí)行ng test:
然后點(diǎn)擊debug, 并打開開發(fā)者工具:
然后按cmd+p:
找到需要調(diào)試的文件:
設(shè)置斷點(diǎn):
然后在spec里面也設(shè)置一個(gè)斷點(diǎn):
最后點(diǎn)擊瀏覽器的刷新按鈕即可:
E2E測(cè)試的參數(shù).
實(shí)際上angular cli是配合著protractor來(lái)進(jìn)行這個(gè)測(cè)試的.
它的命令是 ng e2e.
常用的參數(shù)有:
--config -c 指定配置文件 默認(rèn)是 protractor.conf.js
--element-explorer -ee 打開protractor的元素瀏覽器
--serve -s 在隨機(jī)的端口編譯和serve 默認(rèn)true
--specs -sp 默認(rèn)是執(zhí)行所有的spec文件, 如果想執(zhí)行某個(gè)spec就使用這個(gè)參數(shù), 默認(rèn)是all
--webdriver-update -wu 嘗試更新webdriver 默認(rèn)true
通常執(zhí)行下面機(jī)組命令參數(shù)組合即可:
ng e2e ng e2e -ee
Debug E2E測(cè)試.
看一下項(xiàng)目:
配置文件protractor.conf.js已經(jīng)配置好.
而測(cè)試文件是在e2e目錄下.
看一下spec和po文件:
再看一下app.component.html里面的值:
應(yīng)該是沒問題的.
所以執(zhí)行ng e2e:
測(cè)試通過, 但是瀏覽器閃了一下就關(guān)閉了.
如果我想debug e2e, 那么執(zhí)行這個(gè)命令:
ng e2e -ee
由于我使用的是mac, 當(dāng)前這個(gè)命令在mac上貌似確實(shí)有一個(gè)bug:
關(guān)于怎么在Angular CLI中進(jìn)行單元測(cè)試問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前標(biāo)題:怎么在AngularCLI中進(jìn)行單元測(cè)試-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://aaarwkj.com/article24/gojce.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、搜索引擎優(yōu)化、網(wǎng)站營(yíng)銷、ChatGPT、品牌網(wǎng)站制作、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容