国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

使用Angular CLI進行單元測試和E2E測試的方法

2019-11-19 14:06:41
字體:
來源:轉載
供稿:網友

第一篇文章是: "使用angular cli生成angular5項目" ://www.survivalescaperooms.com/article/136621.htm

第二篇文章是: "使用angular cli從藍本生成代碼" ://www.survivalescaperooms.com/article/137031.htm

第三篇文章是: "使用Angular CLI生成路由" ://www.survivalescaperooms.com/article/137033.htm

第四篇文章時: “使用Angular CLI進行Build (構建) 和 Serve”://www.survivalescaperooms.com/article/137034.htm

本文是該系列的最后一篇文章.

單元測試.

angular cli使用karma進行單元測試.

首先執行ng test --help或者ng test -h查看幫助.

執行測試的話就執行ng test即可, 它會執行項目里所有的.spec.ts文件.

而且它還會檢測文件的變化, 如果文件有變化, 那么它會重新執行測試.

它應該在單獨的終端進程中執行.

首先創建一個angular項目, 帶路由的:

ng new sales --routing

創建好項目后, 直接執行命令測試:

ng test

然后會彈出一個頁面, 就是測試的結果數據.

下面我再添加幾個components 和 一個 admin module:

ng g c personng g c orderng g m admin --routingng g c admin/userng g c admin/email

然后配置一下路由, 最重要得到這個效果:

這時我重新執行一下ng test:

盡管程序運行沒有問題, 但是測試還是出現了問題: router-outlet is not an angular component.

可以看一下spec list:

這時因為運行測試的時候, admin模塊是獨立運行的, 所以該模塊并沒有引用Router模塊, 所以無法識別router-outlet.

那么如何解決這個問題?

打開admin.component.spec.ts:

把這句話填上, 然后就沒有錯誤了:

NO_ERRORS_SCHEMA告訴angular忽略那些不識別的元素或者元素屬性.

  1. --code-coverage -cc 代碼覆蓋率報告, 默認這個是不開啟的, 因為生成報告的速度還是比較慢的.
  2. --colors 輸出結果使用各種顏色 默認開啟
  3. --single-run -sr 執行測試, 但是不檢測文件變化 默認不開啟
  4. --progress 把測試的過程輸出到控制臺 默認開啟
  5. --sourcemaps -sm 生成sourcemaps 默認開啟
  6. --watch -w 運行測試一次, 并且檢測變化 默認開啟 

ng test 就是運行測試, 并且如果文件有變化, 就會重新運行測試.

使用ng test -sr或者ng test -w false 執行單次測試

測試代碼覆蓋率:

ng test --cc 的報告默認是生成在/coverage文件夾下, 但是可以通過修改.angular-cli.json里面的屬性進行修改.

下面生成代碼覆蓋率報告:

ng test -sr -cc

通常是配合-sr參數使用的(運行一次測試).

然后會在項目的coverage文件夾里生成一些文件:

直接打開index.html:

可以看到都是100%, 這是因為我沒有寫任何代碼.

然后我在user component里面添加一些代碼:

再運行一次 ng test --sr -cc:

可以看到這部分代碼并沒有覆蓋到.

如果我把代碼里到 canGetUsers改為true:

再次執行ng test --sr -cc

可以看到這次代碼覆蓋率變化了:

只有catch部分沒有覆蓋到.

我認為代碼覆蓋率這個內置功能是非常好的.

Debug單元測試.

首先執行ng test:

然后點擊debug, 并打開開發者工具:

然后按cmd+p:

找到需要調試的文件:

設置斷點:

然后在spec里面也設置一個斷點:

最后點擊瀏覽器的刷新按鈕即可:

E2E測試的參數.

實際上angular cli是配合著protractor來進行這個測試的.

它的命令是 ng e2e.

常用的參數有:

  1. --config -c 指定配置文件 默認是 protractor.conf.js
  2. --element-explorer -ee 打開protractor的元素瀏覽器
  3. --serve -s 在隨機的端口編譯和serve 默認true
  4. --specs -sp 默認是執行所有的spec文件, 如果想執行某個spec就使用這個參數, 默認是all
  5. --webdriver-update -wu 嘗試更新webdriver 默認true

通常執行下面機組命令參數組合即可:

ng e2eng e2e -ee

Debug E2E測試.

看一下項目:

配置文件protractor.conf.js已經配置好.

而測試文件是在e2e目錄下.

看一下spec和po文件:

再看一下app.component.html里面的值:

應該是沒問題的.

所以執行ng e2e:

測試通過, 但是瀏覽器閃了一下就關閉了.

如果我想debug e2e, 那么執行這個命令:

ng e2e -ee

由于我使用的是mac, 當前這個命令在mac上貌似確實有一個bug:

如果可以正常運行這個命令的話, 終端窗口會出現“Debugger listening on xxx: ”字樣, 然后就可以在下面輸入變量或者表達式來查看它們的值從而進行調試了.

如果想退出調試, 那就按Ctrl+c或者輸入.exit即可.

由于angular cli 更新比較快, 所以查看最新的功能最好還是看官方文檔:https://github.com/angular/angular-cli/wiki

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 富阳市| 象州县| 宾川县| 明水县| 武胜县| 广平县| 唐海县| 民县| 南宁市| 荥经县| 万年县| 黔江区| 连平县| 灵山县| 彰化县| 奎屯市| 岐山县| 耿马| 马尔康县| 双鸭山市| 宝丰县| 上栗县| 高平市| 朝阳区| 永顺县| 璧山县| 乌什县| 沂南县| 和田市| 宝应县| 化隆| 石城县| 沧州市| 柳河县| 涡阳县| 沙田区| 尼勒克县| 德清县| 姜堰市| 青冈县| 万载县|