Mocha测试Promises仍然停留在过程中(锁定)

时间:2018-06-12 15:04:08

标签: javascript node.js unit-testing mocha chai

我正在使用Mocha来测试我的Node.js代码。此特定测试是检查某些存根是否返回已填充对象的数组。 测试结果很好,结果按预期填充,一切都是“绿灯”。但是,当预计Mocha完成其过程时,它仍然停滞不前。完成它的唯一方法是按Ctrl + C.

我试过三种写测试(如下)。在所有这些测试中,测试通过,但保持过程锁定:

1)使用简单的then / catch方法:

describe('#getAll()', function () {
    it('should return a list of objects', function (done) {
        orderRepository.getAll()
            .then((result) => {
                assert.isArray(result);
                done();
            })
            .catch((err) => { done(err); });
    });
});

2)使用新的Mocha-ready Promise测试:

describe('#getAll()', function () {
    it('should return a list of objects', function () {
        return orderRepository.getAll()
            .then((result) => {
                assert.isArray(result);
            });
    });
});

3)使用async / await的推荐方法:

describe('#getAll()', function () {
    it('should return a list of Order objects', async function () {
        var result = await orderRepository.getAll();
        assert.isArray(result);                
    });
});

再次说明:所有三种方法都会返回绿灯测试,但仍然卡在摩卡过程中。

我正在使用Mocha和Chai作为必需的模块。

如果有人能帮助我,我会很高兴的!

2 个答案:

答案 0 :(得分:0)

我尝试了所有3个测试,但它们似乎都可以正常工作,并且可以退出。enter image description here enter image description here

答案 1 :(得分:0)

您可以尝试放入process.exit()

idk if是最好的方法,但对我有用:)