在jasmine测试中覆盖环境变量

时间:2018-04-20 09:13:14

标签: javascript angular testing jasmine

我有一个看起来像这样的Angular服务:

import {environment} from '../environment'

...

public something() {
 if(environment.production)
 {
   // do stuf
 } else {
  // do something else 
 }
}

现在我想测试两种情况(dev和prod environemnt)。我如何"模拟"何时导入环境?

1 个答案:

答案 0 :(得分:0)

所以我提出了一个解决方案,我没有必要在我的服务中检查环境:

我使用了useFactory

NgModule({
  declarations: [],
  imports: [],
  providers: [
    {
      provide: Service,
      useFactory: (httpClient: HttpClient) => {
        if (environment.production) {
          return new MyCustomService(httpClient);
        } else {
          return new Service();
        }
      },
      deps: [HttpClient],
    }
  ],
  bootstrap: [AppComponent]
})

这样我管理应用程序启动时提供的服务