Я устал от попыток выяснить следующее. В основном у меня есть метод в моем компоненте, который вызывает службу, которая является поддельной. Как только эта служба завершает свою работу, другая служба выполняет некоторые действия по ведению журнала, что также проверяется. Но мой тест провалился, сказав, что служба журналирования не была вызвана:
process(){
const that : any = this;
this.mainService.process().then(result=>{
return result;
}).then(result=>{
//log the operation now after doing some checkups
let checkups = ""
that.logService.log('process',result, checkups).then(logged=>{
console.log(logged)
}).catch(err=>console.log(err)
}).catch(err=>console.log(err);
}
До того, как мы go впереди, выполнение Promise.all () не соответствует опции из-за логики c в место для осмотра. Теперь к биту тестирования:
fit("should log processed request", done => {
const mainSerivce = TestBed.get(MainService)
const logService = TestBed.get(LogService)
spyOn(mainService, "process").and.returnValue(Promise.resolve({id:34,value:64, rank:310));
const logSpy = spyOn(logSerivce, "log").and.returnValue(Promise.resolve({'done':true}))
fixture.whenStable().then(finished=>{
component.process();
expect(logSpy).toHaveBeenCalled();
done();
})
});
expect(logSpy).toHaveBeenCalled();
теперь терпит неудачу, но я вижу в своей консоли результат mock {'done': true} или любого другого значения, которое я передаю, отображается, что означает, что оно было смоделировано и вызвано (?). Чего мне не хватает, так как методы, похоже, были проверены и правильно зарегистрированы в консоли.