Мокко чай решить несколько обещаний - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь запустить тесты по этим обещаниям, но получаю эту ошибку:

"Ошибка: превышено время ожидания 2000 мс. Для асинхронных тестов и перехватов убедитесь, что вызывается" done () "; при возврате в Promise убедитесь, что он разрешен. (C: \ Users \ Ranieri \ Documents \ Projetos \ Node Js \" testestest \ тест \ ЛИЭС \ registerUser.test.js) "* ​​1003 *

Я уже увеличил время ожидания, но проблема все еще не решена.

Я искал асинхронный тест здесь на stackoverflow и не нашел ничего или кого-либо с чем-то похожим

мой тестовый код https://github.com/ran-j/teste

Уже пробовал:

expect(Promise.resolve( userPromesie.selectUser(rUser) ) ).to.be.null

return expect(Promise.resolve( userPromesie.selectUser(rUser) ) ).to.be.null

userPromesie.selectUser(rUser).then((result) => result.to.be.null

1 Ответ

0 голосов
/ 05 июля 2019

selectUser возвращает Promise, и вам нужно подождать, пока это разрешится, чтобы иметь возможность утверждать против него.Это может быть достигнуто двумя способами:

  • Использование then в возвращающем обещании, вызов функции done() в этом блоке.
  • Используя async/await, вы объявляете свою функцию async и вы await Обещание

Ниже приведен пример метода async/await:

it('should do something with the user', async () => {
    const user = await userPromise.selectUser(rUser);
    expect(user).to.be.null;
});

Я бы настоятельно рекомендовал ознакомиться с Обещаниями для получения дополнительной информации.: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

РЕДАКТИРОВАТЬ Вот пример использования метода done:

it('should do something with the user', (done) => {
    userPromise.selectUser(rUser).then((user) => {
        expect(user).to.be.null;
        done();
    });

});
...