Мокко тестирование Обещания остается в процессе (заблокировано) - PullRequest
0 голосов
/ 12 июня 2018

Я использую Mocha для проверки своего кода Node.js.Этот конкретный тест проверяет, возвращает ли некоторая заглушка массив заполненных объектов.Тест хороший, результат возвращается заполненным, как и ожидалось, и все "зеленым".Но когда ожидалось, что Мокко завершит свой процесс, он застрянет.Единственный способ закончить это - нажать 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) Использование нового теста Promise с поддержкой Mocha:

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.

Я использую Мокко и Чай в качестве необходимых модулей.

Буду рад, если кто-нибудь сможет мне помочь!

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

вы можете попробовать поставить process.exit()

idk, если это лучший способ, но у меня сработало:)

0 голосов
/ 29 июня 2018

Я перепробовал все ваши 3 теста, и они, кажется, работают нормально и выходят нормально. enter image description hereenter image description here.

...