簡體   English   中英

Angular CLI使用配置和E2E測試

[英]Angular CLI use configuration with E2E tests

我正在將Angular CLI項目更新到v6

我遇到的問題是在v6之前我可以使用命令ng e2e -e=e2e ,測試可以在給定的環境下正常運行。 在v6中,環境更改為配置,但ng e2e -c=e2e不起作用。

我得到的錯誤是:

Configuration 'e2e' could not be found in project 'admin-e2e'.
Error: Configuration 'e2e' could not be found in project 'admin-e2e'.
at Architect.getBuilderConfiguration (c:\_inmoment\admin\client\node_modules\@angular-devkit\architect\src\architect.js:102:23)
at MergeMapSubscriber._loadWorkspaceAndArchitect.pipe.operators_1.concatMap [as project] (c:\_inmoment\admin\client\node_modules\@angular\cli\models\architect-command.js:64:55)
at MergeMapSubscriber._tryNext (c:\_inmoment\admin\client\node_modules\rxjs\internal\operators\mergeMap.js:122:27)
at MergeMapSubscriber._next (c:\_inmoment\admin\client\node_modules\rxjs\internal\operators\mergeMap.js:112:18)
at MergeMapSubscriber.Subscriber.next (c:\_inmoment\admin\client\node_modules\rxjs\internal\Subscriber.js:103:18)
at TapSubscriber._next (c:\_inmoment\admin\client\node_modules\rxjs\internal\operators\tap.js:109:26)
at TapSubscriber.Subscriber.next (c:\_inmoment\admin\client\node_modules\rxjs\internal\Subscriber.js:103:18)
at MergeMapSubscriber.notifyNext (c:\_inmoment\admin\client\node_modules\rxjs\internal\operators\mergeMap.js:141:26)
at InnerSubscriber._next (c:\_inmoment\admin\client\node_modules\rxjs\internal\InnerSubscriber.js:30:21)
at InnerSubscriber.Subscriber.next (c:\_inmoment\admin\client\node_modules\rxjs\internal\Subscriber.js:103:18)

我試圖將配置部分添加到angular.json的e2e部分。

我試圖在項目的架構師部分添加另一個部分,它總是使用e2e配置。

有誰知道如何在e2e測試中使用--configuration標志?

只是不確定我錯過了什么。

首先從e2e的選項部分刪除"devServerTarget": "project:serve" ,並嘗試將其置於您需要的特定配置中。 在這種情況下,如果您在本地運行測試,請使用它,對於Jenkins或CI,將其刪除並放置baseUrl以定位特定網址。

此外,在此配置之后,您可以從命令行傳遞--base-url ,以便從jenkins為e2e-ci動態更改基本URL。

ng e2e --configuration=e2e-ci --suite=home --base-url="http://google.com"

以下是配置

"project-e2e": {
  "root": "e2e/",
  "sourceRoot": "e2e",
  "projectType": "application",
  "prefix": "",
  "architect": {
    "e2e": {
      "builder": "@angular-devkit/build-angular:protractor",
      "options": {
        "protractorConfig": "./protractor.conf.js"
        // remove "devServerTarget": "project:serve" here. it normally for all
      },
      "configurations": {
        "production": {
          "devServerTarget": "project:serve:production",  // use it here for local test to pull localhost:4200 and run test on it
          "serve": false,
          "webdriverUpdate": false
        },
        "e2e-ci": { // this one is for jenkins/CI so no dev server require but pass the baseUrl. see there is no devServerTarget option here
          "protractorConfig": "./protractor.conf.js",  
          "baseUrl": "https://specificurltotest.org"
        }
      }
    },
    "lint": {
      "builder": "@angular-devkit/build-angular:tslint",
      "options": {
        "tsConfig": "e2e/tsconfig.e2e.json",
        "exclude": [
          "**/node_modules/**"
        ]
      }
    }
  }
}

我想到了。 如果您需要使用不同的配置,這將不起作用。 但是,如果您想要用於e2e測試的單一配置,那么您就是這樣做的。

在文件的angular.json的主要部分中有配置。 您可以參考任何這些配置! 我所要做的就是更新devServerTarget部分以獲取e2e測試,以引用正確的構建配置。

所以改變這個:

"e2e": {
  "builder": "@angular-devkit/build-angular:protractor",
  "options": {
    "protractorConfig": "./protractor.conf.js",
    "devServerTarget": "admin:serve"
  }
}

對此:

"e2e": {
  "builder": "@angular-devkit/build-angular:protractor",
  "options": {
    "protractorConfig": "./protractor.conf.js",
    "devServerTarget": "admin:serve:e2e"
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM