Angular 2 次测试 - process.env
Angular 2 testing - process.env
我尝试在我的应用程序中模拟请求,但过程变量有问题。我存储在 process.env.backendUrl url 到后端 API。然后在 RestService 中我有:
constructor(private http: Http) {
this.rest = process.env.backendUrl + "/api/";
}
现在无法 运行 测试,因为在例如 LoginComponent 中,我有 RestService 依赖项,并且出现此错误:
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)
我在 enviroment.ts 中设置了 proccess.env.backendUrl(由 angular-cli 创建的文件)。
process.env.backendUrl = 'http://localhost:8080';
export const environment = {
production: false
};
我应该将它设置在其他地方还是有什么方法可以告诉 karma 这个变量?
如果您使用 angular-cli,您应该只将 backendUrl
添加到 environment
。
export const environment = {
production: false,
backendUrl: 'http://localhost:8080'
};
您还应该将其添加到 environment.prod.ts
文件中,将 url 设置为生产 url。当您在生产中构建时,将使用 .prod
文件。
在您的文件中,您应该导入 environment
(来自 environment.ts
文件)并仅使用 environment.backendUrl
.
另请参阅:
我尝试在我的应用程序中模拟请求,但过程变量有问题。我存储在 process.env.backendUrl url 到后端 API。然后在 RestService 中我有:
constructor(private http: Http) {
this.rest = process.env.backendUrl + "/api/";
}
现在无法 运行 测试,因为在例如 LoginComponent 中,我有 RestService 依赖项,并且出现此错误:
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)
我在 enviroment.ts 中设置了 proccess.env.backendUrl(由 angular-cli 创建的文件)。
process.env.backendUrl = 'http://localhost:8080';
export const environment = {
production: false
};
我应该将它设置在其他地方还是有什么方法可以告诉 karma 这个变量?
如果您使用 angular-cli,您应该只将 backendUrl
添加到 environment
。
export const environment = {
production: false,
backendUrl: 'http://localhost:8080'
};
您还应该将其添加到 environment.prod.ts
文件中,将 url 设置为生产 url。当您在生产中构建时,将使用 .prod
文件。
在您的文件中,您应该导入 environment
(来自 environment.ts
文件)并仅使用 environment.backendUrl
.
另请参阅: