Я пытаюсь понять, как использовать Jasmine для тестирования вложенных обещаний в JS. Какой будет примерная схема для этого?
У меня есть код, который представляет движения эльфа. Идея состоит в том, чтобы проверить реакцию эльфа на разные драгоценные камни, например. "пироп" в моем случае. Моя функция состоит из прикованных обещаний. Может кто-нибудь дать мне подсказку, пожалуйста, как я могу проверить свой кусок кода, используя Jasmine. Я прочитал, что мне нужно использовать часы Жасмин, но я не могу понять, как это сделать.
Я уже написал тестовую функцию, но она проверяет только половину функции (останавливаясь на "then")
Функция для проверки:
function pirop(elf) {
return new Promise((resolve => {
setTimeout(() => {
bothLegsIn(elf);
bothHandsUp(elf).then(() => {
bothLegsOut(elf);
bothHandsDown(elf);
});
resolve(elf);
}, elf.danceSpeed);
}));
}
Функция тестирования:
it("Pirop: legs in, hands up, then legs out, hands down", function(done) {
jasmine.clock().install();
let elf = {
danceSpeed: 10,
stance: [0, 0, 0, 0],
}
pirop(elf);
jasmine.clock().tick(200);
expect(elf.stance).toEqual([1, 1, 1, 1]); //test function successfully check this position, but doesn't move on
jasmine.clock().tick(40);
expect(elf.stance).toEqual([0, 0, 0, 0]); //still stays untested
jasmine.clock().uninstall();
});
Исходное положение (позиция) - [0, 0, 0, 0]. Финал такой же. Позиция после «ноги в поднятые руки» будет [1, 1, 1, 1]. Поэтому мне нужно проверить обе позы в одном тесте.