Angular 2测试 - process.env

时间:2016-11-04 13:42:01

标签: testing angular mocking testbed

我尝试在我的应用程序中模拟请求,但是流程变量存在问题。我将process.env.backendUrl url存储在后端API中。然后在RestService中我有:

get '/users/validation/check_email', to: 'users#check_email', as: :check_email

现在不可能运行测试,因为在例如LoginComponent中我有RestService依赖项并且我遇到了这个错误:

constructor(private http: Http) {
    this.rest = process.env.backendUrl + "/api/";
}

我在enviroment.ts(由angular-cli创建的文件)中设置 proccess.env.backendUrl

zone.js:140 Uncaught Error: Error in ./LoginComponent class LoginComponent_Host - inline template:0:0 caused by: process is not defined
ReferenceError: process is not defined
at new RestService (http://localhost:9876/base/src/test.ts:21595:2790)
at DynamicTestModuleInjector.get (DynamicTestModule.ngfactory.js:170:67)
at DynamicTestModuleInjector.get (DynamicTestModule.ngfactory.js:180:93)
at DynamicTestModuleInjector.getInternal (DynamicTestModule.ngfactory.js:255:51)
at DynamicTestModuleInjector.NgModuleInjector.get (http://localhost:9876/base/src/test.ts:25036:27)
at TestBed.get (http://localhost:9876/base/src/test.ts:5589:51)
at _View_LoginComponent_Host0.createInternal (LoginComponent_Host.ngfactory.js:16:74)
at _View_LoginComponent_Host0.AppView.create (http://localhost:9876/base/src/test.ts:36192:21)
at _View_LoginComponent_Host0.DebugAppView.create (http://localhost:9876/base/src/test.ts:36404:44)

我应该在其他地方设置它还是有任何方法可以告诉业力这个变量?

1 个答案:

答案 0 :(得分:6)

如果您使用的是angular-cli,则只需将backendUrl添加到environment即可。

export const environment = {
  production: false,
  backendUrl: 'http://localhost:8080'
};

您还应将其添加到environment.prod.ts文件中,将网址设置为生产网址。在生产中构建时,将使用.prod文件。

在您的文件中,您应该导入environment(来自environment.ts文件)并使用environment.backendUrl

另见: