0
我main.ts
文件看起來像這樣:Angular 2:錯誤:沒有爲Http提供程序! (帳戶服務 - > HTTP)
import { bootstrap } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { HTTP_PROVIDERS } from '@angular/http'
import { ClientDashboardTwoAppComponent, environment } from './app/';
if (environment.production) {
enableProdMode();
}
bootstrap(ClientDashboardTwoAppComponent, [HTTP_PROVIDERS]);
我嘗試添加http服務進入我的服務,因爲我只是硬編碼的all()
響應現在:
import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http'
@Injectable()
export class AccountService {
constructor(private http: Http) {} // <------------------ just added and it broke my tests
all() {
return Promise.resolve([
{ name: "Account 1" },
{ name: "Account 2" },
{ name: "Account 3" },
]);
}
}
但是,該行使用此服務中斷了組件測試(這些規範來自角度cli生成器,我所做的只是在beforeEachProviders()
中添加了AccountService
提供程序):
import {
beforeEach,
beforeEachProviders,
describe,
expect,
it,
inject,
} from '@angular/core/testing';
import { ComponentFixture, TestComponentBuilder } from '@angular/compiler/testing';
import { Component } from '@angular/core';
import { By } from '@angular/platform-browser';
import { EngagementTableComponent } from './engagement-table.component';
import { AccountService } from '../account.service';
describe('Component: EngagementTable',() => {
let builder: TestComponentBuilder;
beforeEachProviders(() => [EngagementTableComponent, AccountService]);
beforeEach(inject([TestComponentBuilder], function (tcb: TestComponentBuilder) {
builder = tcb;
}));
it('should inject the component', inject([EngagementTableComponent],
(component: EngagementTableComponent) => {
expect(component).toBeTruthy();
}));
it('should create the component', inject([],() => {
return builder.createAsync(EngagementTableComponentTestController)
.then((fixture: ComponentFixture<any>) => {
let query = fixture.debugElement.query(By.directive(EngagementTableComponent));
expect(query).toBeTruthy();
expect(query.componentInstance).toBeTruthy();
});
}));
});
@Component({
selector: 'test',
template: `
<engagement-table></engagement-table>
`,
directives: [EngagementTableComponent]
})
class EngagementTableComponentTestController {
}
我是否錯過了一個步驟?我需要在規格中注入什麼?
是的,它在那裏。當我刪除'構造函數(私人http:Http){}'它不會中斷 – Edmund
您是否使用打字稿? –
是的,我是。這是否使任何不同 – Edmund