У меня есть проблемы со следующим исходным кодом и соответствующий блок-Test:Устранены Обещания внутри AngularJS Unit-тест не работает с Жасмин spyOn
Источник:
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");
}
Unit Test:
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);
})
Даже жесткий я проходил в разрешен объект обещания, функции обратного вызова внутри метода . Then никогда не вызываются. Источник отлично работает при нормальной работе, но ведет себя неправильно, когда выполняется внутри Unit-теста с использованием jasmine's spyOn.
Спасибо, это работает. Не могли бы вы рассказать мне, почему, пожалуйста? Есть ли альтернатива? Мы не хотим вызывать $ scope. $ Digest во всех наших тестовых спецификациях. – KayO