Обещание не разрешится в модульном тесте - PullRequest
0 голосов
/ 21 мая 2018

Обещание просто не разрешится в модульном тесте.

it('should break', function(done){
     const promise =  Promise.resolve([1, 2, 3, 4 , 5]); 
     promise.then(function(){
         expect(true).to.be.false;
         done();
     });
});

Я тоже пробовал это.(Это на самом деле работает в моем отдельном новом примере проекта, который я создал, но это не работает в моем реальном проекте, так что это странно

import {wait} от 'chai';

description ('Hello function ', function () {

it('should return hello world', function () {
    const promise = Promise.resolve(1);
    return promise.then(function () {
        expect(true).to.be.false;
    });
});

});

Фон "karma-mocha": "^ 1.3.0", "karma-webpack": "^ 2.0.1 "," karma-chai ":" ^ 0.1.0 "," karma-chrome-launcher ":" ^ 2.2.0 "," typcript ":" ~ 2.3.4 "," tslint-loader ":" ^3.3.0 ",

В каркасах karma.config.js

: ['mocha', 'chai'], браузеры: ['ChromeHeadless'],

Ошибкасообщение, которое я получил

✖ should break
  HeadlessChrome 0.0.0 (Mac OS X 10.12.6)
Error: Timeout of 9999ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Есть 2 способа сделать асинхронные тесты с мокко.Использование done() или возвращение обещания.

Поскольку вы используете обещания, простое возвращение обещания имеет смысл.В этом примере удаляется done и возвращается обещание.

it('should break', function(){
  const promise =  Promise.resolve([1, 2, 3, 4 , 5]); 
  return promise.then(function(){
    expect(true).to.be.false;
  });
});

Переписано как функции async / await + arrow:

it('should break', async () => {
  await [1, 2, 3, 4 , 5];
  expect(true).to.be.false;
});

Использование done() возможно возможноно вы не должны смешивать возвращающиеся обещания и звонить done().

0 голосов
/ 21 мая 2018

вы должны вернуть обещание и позвонить done () после вашего подтверждения.

it('should break', function(done){
 const promise =  Promise.resolve([1, 2, 3, 4 , 5]); 
 return promise.then(function(){
     expect(true).to.be.false;
     done();
 });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...