Как я могу проверить функцию, возвращающую обещания и содержащую «затем» - PullRequest
0 голосов
/ 22 апреля 2019

Я пытаюсь понять, как использовать 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]. Поэтому мне нужно проверить обе позы в одном тесте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...