Angular E2E 访问环境变量

Posted

技术标签:

【中文标题】Angular E2E 访问环境变量【英文标题】:Angular E2E acces environment variables 【发布时间】:2021-11-01 16:25:07 【问题描述】:

所以我将 NX 与 Angular 一起使用,并且我有多个应用程序,它们具有两种可能的身份验证方法。因此,我需要进行 E2E 测试,测试两种身份验证方法,因为它们的输入字段不同。所以这将是我的尝试,但我不知道应该如何导入环境变量:

describe('Login Page', () => 
  it('Login should succeed', () => 
    if (environment.authType === 'password') 
      [...]
     else if (environment.authType === 'oauth') 
      [...]
  );
);

在我的应用中,我使用依赖注入来访问环境,是否可以访问它们?:

import  environment  from '../environments/environment';

@NgModule(
  declarations: [AppComponent],
  imports: [
    BrowserModule,
    AppRoutingModule,
  ],
  providers: [
     provide: 'environment', useValue: environment
  ],
  bootstrap: [AppComponent]
)
export class AppModule 

【问题讨论】:

【参考方案1】:

切换到赛普拉斯进行 e2e 测试,Nx 支持新版本(不确定是否要改装)。

Cypress 具有非常简单灵活的配置选项,请参阅 Configuration 和 Environment 的文档

例如,只需将其添加到 cypress.json 配置文件中


  "env": 
    "authtype": "password",
    "login_url": "/login",
    "username": "...",
    "password": "..."
  

和测试

describe('Login Page', () => 
  it('Login should succeed', () => 
    if (Cypress.env('authType') === 'password') 
      [...]
     else if (Cypress.env('authType') === 'oauth') 
      [...]
  )
)

【讨论】:

以上是关于Angular E2E 访问环境变量的主要内容,如果未能解决你的问题,请参考以下文章

使用 Angular 为 NativeScript 设置不同环境变量的最佳方法是啥?

Angular 6,我应该将秘密环境变量放在 environment.ts 文件中吗?

在 Spring Boot 中将 Angular 环境变量传递给编译的静态 Angular 文件

无法从 Webpack 配置向 Angular 2 提供环境变量

Angular环境变量的使用(environment)

Vue CLI 模式和环境变量