Angular環境変数 APIエンドポイントの設定 :
.\src\environments:
environment.ts
environment.test.ts
environment.prod.ts
環境ファイルには、ローカルdevサーバーとCIサーバーで異なる次のような設定が含まれています。
export const environment = {
...
apiUrl: "https://api.sample.com"
};
アプリケーションをビルドまたは起動する必要がある場合、それはうまく機能します。 environmentパラメーターを指定するだけです:
ng serve --environment=test
...しかし、e2eの実行時に 特定の環境を設定することは不可能分度器 テストであるように見えました。次のコマンドは、環境を単に無視します(これは このコメント に従って予想されるようです)。デフォルト環境が常に使用されます:
ng e2e --environment=test // same as `ng e2e`
特定の環境を使用してテストを実行する他の方法はありますか?
新しいAngular 6 angular.json
構成ファイル:ファイルを使用できましたenvironment.test.ts
私のe2eテストで。プロジェクトで新しいアーキテクトを作成する必要がありました。それをserve-e2e
。
"serve-e2e": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "q-desktop-v2:build:test"
}
}
私のbuild:test構成は、「fileReplacements」構成を使用します。
"test": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.test.ts"
}
]
}
次に、プロジェクトe2eで、devServerTargetにカスタマイズした「serve-e2e」オプションを使用します。
"options": {
"protractorConfig": "./protractor.conf.js",
"devServerTarget": "q-desktop-v2:serve-e2e"
}
これにより、アプリがテスト環境で実行されている場合、特定のコードを簡単に追加または無視できます。
if (!environment.test) {
// do something
}
.angular-cli.jsonに追加することで、異なる環境を正常に使用することができました
"environments": {
"dev": "environments/environment.ts",
"test": "environments/environment.test.ts",
"prod": "environments/environment.prod.ts"
}
それから
ng e2e --environment test
Angular 6は--environment
オプションのサポートを削除しました。 build
またはserve
の場合は、ng build --configuration test
またはng serve --configuration test
に切り替えることができます。ただし、少なくとも私のプロジェクトでは、Angularアップグレードは実際に、angular.jsonファイルに<myproject>-e2e
という名前の他のプロジェクト構成全体を作成しました。
内部では、このように見えるかもしれません。
"myproject-e2e": {
"root": "",
"sourceRoot": "",
"projectType": "application",
"architect": {
"e2e": {
"builder": "@angular-devkit/build-angular:protractor",
"options": {
"protractorConfig": "./protractor.conf.js",
"devServerTarget": "jglite:serve"
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": [
"e2e/tsconfig.e2e.json"
],
"exclude": [
"**/node_modules/**"
]
}
}
}
}
"devServerTarget": "jglite:serve"
行は、デフォルトのserve
構成で構成を指しています。
私の場合、常にdev
構成でe2eテストを実行したいので、この行を"devServerTarget": "jglite:serve:dev"
に変更し、ng e2e
を呼び出すだけで必要な環境を実行できました。