如何使用不同的Angular环境变量运行Protractor e2e测试

Ser*_*pin 21 environment-variables protractor e2e-testing angular

我使用Angular环境变量来配置API端点:

.\src\environments:
    environment.ts
    environment.test.ts
    environment.prod.ts
Run Code Online (Sandbox Code Playgroud)

环境文件包含以下设置,这些设置对于本地开发和CI服务器是不同的:

export const environment = {
  ...
  apiUrl: "https://api.sample.com"
};
Run Code Online (Sandbox Code Playgroud)

当我需要构建或启动应用程序时,这工作正常.我可以简单地指定环境参数:

ng serve --environment=test
Run Code Online (Sandbox Code Playgroud)

......但是在运行e2e Protractor测试时似乎无法设置特定的环境.以下命令只是忽略了环境(根据此注释似乎是预期的).始终使用默认环境:

ng e2e --environment=test    // same as `ng e2e`
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以使用特定环境运行测试?

Lou*_*med 13

使用新的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"
      }
    }
Run Code Online (Sandbox Code Playgroud)

我的构建:test config使用"fileReplacements"配置:

    "test": {
      "fileReplacements": [
        {
          "replace": "src/environments/environment.ts",
          "with": "src/environments/environment.test.ts"
        }
      ]
    }
Run Code Online (Sandbox Code Playgroud)

然后在我的项目-e2e中,我使用我为devServerTarget定制的"serve-e2e"选项:

      "options": {
        "protractorConfig": "./protractor.conf.js",
        "devServerTarget": "q-desktop-v2:serve-e2e"
      }
Run Code Online (Sandbox Code Playgroud)

如果应用程序在测试环境中运行,这可以轻松添加或忽略特定代码:

    if (!environment.test) {
     // do something
    }
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你写这篇文章.对于那些试图解决问题的人,我只是写了一个更明确的版本,突出显示了这一切在angular.json文件中是如何工作的https://medium.com/building-the-stack/e2e-testing-with-env-variables -with-量角器和 - 角-6- e3e593f7ad58 (4认同)

Joz*_*art 5

通过将其添加到.angular-cli.json,我能够成功使用不同的环境

  "environments": {
    "dev": "environments/environment.ts",
    "test": "environments/environment.test.ts",
    "prod": "environments/environment.prod.ts"
  }
Run Code Online (Sandbox Code Playgroud)

然后打电话

ng e2e --environment test
Run Code Online (Sandbox Code Playgroud)

  • 您提到的环境配置已存在于app部分下,但我无法访问protractor配置文件中规范OR中的环境变量.那么你能告诉你是如何访问环境变量的? (4认同)