在 Angular 2 中模拟后端响应
Mock back-end responses in Angular 2
在我使用 Angular 1 制作的应用程序中,我使用 angular-mocks 构建前端,而不需要启动后端和 运行:
(function() {
angular
.module('myapp')
.run(['$httpBackend', function($httpBackend) {
$httpBackend.whenGET(/.*\/api\/ratings\/\?.*/).respond(function(method, url) {
var params = matchParams(url.split('?')[1]);
var list = findRatings(ratings, params);
return createPageResponse(list, params.page, params.size);
});
}]
})();
现在我想在 Angular 2. 推荐的方法是什么?
用户可以根据某些条件使用不同的服务:
@NgModule({
imports: [..],
declarations: [..],
providers: [
{
provide: YourService,
useClass: env.prod ? YourService : DummyService
}
],
bootstrap: [..]
})
export class AppModule {
}
或者使用工厂,如果你需要一些更复杂的东西..
@NgModule({
imports: [..],
declarations: [..],
providers: [
AnotherService,
{
provide: YourService,
useFactory: (isProd, anotherSrvc) => isProd ? new YourService(anotherSrvc) : new DummyService(),
deps: [env.prod, AnotherService]
}
],
bootstrap: [..]
})
export class AppModule {
}
在我使用 Angular 1 制作的应用程序中,我使用 angular-mocks 构建前端,而不需要启动后端和 运行:
(function() {
angular
.module('myapp')
.run(['$httpBackend', function($httpBackend) {
$httpBackend.whenGET(/.*\/api\/ratings\/\?.*/).respond(function(method, url) {
var params = matchParams(url.split('?')[1]);
var list = findRatings(ratings, params);
return createPageResponse(list, params.page, params.size);
});
}]
})();
现在我想在 Angular 2. 推荐的方法是什么?
用户可以根据某些条件使用不同的服务:
@NgModule({
imports: [..],
declarations: [..],
providers: [
{
provide: YourService,
useClass: env.prod ? YourService : DummyService
}
],
bootstrap: [..]
})
export class AppModule {
}
或者使用工厂,如果你需要一些更复杂的东西..
@NgModule({
imports: [..],
declarations: [..],
providers: [
AnotherService,
{
provide: YourService,
useFactory: (isProd, anotherSrvc) => isProd ? new YourService(anotherSrvc) : new DummyService(),
deps: [env.prod, AnotherService]
}
],
bootstrap: [..]
})
export class AppModule {
}