【发布时间】:2016-01-26 22:52:42
【问题描述】:
我对以下源代码和相应的单元测试有疑问:
来源:
public laufeVorwaertsUndZurueck(laenge:number):ng.IPromise<any>{
return this.ev3DifferentialPilotAdapterService.run(laenge)
.then((response:any)=> {
return this.ev3DifferentialPilotAdapterService.rotate(180);
})
.then((response:any)=> {
return this.ev3DifferentialPilotAdapterService.run(laenge);
})
.then((response:any)=> {
return this.ev3DifferentialPilotAdapterService.rotate(180);
});
console.log("done");
}
单元测试:
it("laufe 60cm vorwärts und laufe wieder zurück", () =>{
var promise = qService.resolve("resolved");
console.log(promise);
spyOn(ev3DifferentialPilotAdapterService, "run").and.returnValue(promise);
spyOn(ev3DifferentialPilotAdapterService, "rotate").and.returnValue(promise);
baseBallAktionenService.laufeVorwaertsUndZurueck(60);
expect(ev3DifferentialPilotAdapterService.run).toHaveBeenCalledWith(60);
expect(ev3DifferentialPilotAdapterService.run).toHaveBeenCalledTimes(2);
expect(ev3DifferentialPilotAdapterService.rotate).toHaveBeenCalledWith(180);
expect(ev3DifferentialPilotAdapterService.rotate).toHaveBeenCalledTimes(2);
})
即使我传入一个 resolved 承诺对象,.then 方法中的回调函数也不会被调用。源代码在正常运行时很好,但在使用 jasmine 的 spyOn 的单元测试中执行时出现错误。
【问题讨论】:
标签: angularjs unit-testing mocking jasmine promise