【发布时间】:2018-11-19 13:49:55
【问题描述】:
我是 Angular 新手,目前正在为我的应用程序编写单元测试。我真的很困惑,似乎无法为我当前的任务编写单元测试。 我的组件使用以下方法:
async updateLevelModes(level: Level) {
const updateModes: Promise<any>[] = [];
for(let mode of level.Modes) {
const updateMode = this.modeService.updateMode(mode);
updateModes.push(updateMode);
}
await Promise.all(updateModes);
const update = await this.LevelService.updateLevel(level);
level.Id = update._id;
}
它使用两个服务,modeService 和 levelService。
我的 LevelService.ts 看起来像这样
async updateLevel(level: Level): Promise<void> {
const formdata = new FormData();
formdata.append('Name', level.Name);
formdata.append('Description', level.Description);
formdata.append('ImageFile', level.ImageFile);
const resultLevel = await this.http.put<IStep>(this.postStepsUrl+'/'+step.Id, formdata)
.pipe(catchError(this.errorHandler))
.toPromise<IStep>();
this.HandleStepResult(Level, resultLevel);
}
我应该如何为如此复杂的方法编写测试?请帮忙
【问题讨论】:
-
在
updateLevelModes的测试中,您可以模拟modeService.updateMode和LevelService.updateLevel,以便它们返回已解决的承诺,因此您不必处理服务中的所有逻辑。然后您可以断言level.Id已正确更新。
标签: angular typescript http testing jasmine