如何测试功能,返回承诺并包含“ then”

时间:2019-04-22 14:45:46

标签: javascript testing jasmine

我试图了解如何使用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]。所以我需要在一项测试中测试两种姿势。

0 个答案:

没有答案