0
[角版本:2.4.5]角茉莉花集成測試與服務使用真實HTTP
我試圖編寫包含利用服務的角度集成組件單元測試內置的HTTP角庫。雖然我無法讓我的服務類實例化:服務未定義或者我得到「錯誤:無法解析'RequestOptions'(?)」的所有參數。
我明白,通常你會嘲笑後端(在其他單元測試中已經成功完成)或使用量角器。其他SO問題參考Angular 1或有似乎不起作用的答案。起始碼:
@Injectable()
export class ProjectService {
projectFeature: IProjectFeature;
constructor(private http: Http) { }
getProjects(): Observable<IProjects> {
return this.http.get("/api/Projects")
.map((response: Response) => response.json() || {})
.catch(this.handleError);
}
}
// Jasmine spec file:
beforeEach(async(() => {
TestBed.configureTestingModule({
providers: [
Http,
ProjectService, // service that leverages HTTP
ConnectionBackend
//RequestOptions // removed b/c otherwise can't find parameters error happens
],
imports: [
HttpModule
]
});
}));
it('sample test', async(() => {
var projectService = TestBed.get(ProjectService);
var comp = new ProjectComponent(projectService);
comp.ngOnInit(); // internally, calls projectService.getProjects()
expect(comp.projects[0].name).toEqual("Sample Project Name");
}));
你沒有提供的HttpModule來測試牀,是嗎? – estus
@estus目前不是。我已經添加了它,並更新了上面的代碼。現在它失敗了,說「不能讀取屬性響應的未定義」 – dotNetkow
這是不可能說出你的情況有什麼問題。考慮到這是集成測試,可能會有比您發佈的代碼多得多的代碼。無論如何,它就這麼簡單(比[它在A1](http://stackoverflow.com/a/42331623/3731501))簡單得多。我已經添加了解釋如何完成的答案。 – estus