J'apprends actuellement sinon. Mes codes:promettre un retard au moka
const bluebird = require('bluebird');
const sinon = require('sinon');
const sinonTest = require('sinon-test')(sinon);
sinon.test = sinonTest;
describe('xxx', function _test() {
this.timeout(2000);
it('should', sinon.test(function() {
return new bluebird.Promise((resolve, reject) => {
try {
console.log('123');
resolve();
} catch (err) {
reject(err);
};
})
.then(() => console.log('456'))
.delay(100)
.then(() => console.log('789'))
.then(function() {
})
}));
});
sortie:
xxx
123
456
Pourquoi les temps de code ci-dessus et sur coincés dans delay
? Merci
MISE À JOUR
const bluebird = require('bluebird');
const sinon = require('sinon');
const sinonTest = require('sinon-test')(sinon);
sinon.test = sinonTest;
describe('xxx', function _test() {
this.timeout(2000);
it('should', sinon.test(function() {
return bluebird
.delay(100)
.then(() => console.log('789'));
}));
});
Sortie:
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves
MISE À JOUR
Merci @Louis. Réglage useFakeTimers
fonctionne très bien.
Mais je suis juste confus. Pourquoi dans mon projet, il n'y a pas de problèmes avec les tests existants où useFakeTimers
mis à true par défaut? Si useFakeTimers
est défini sur true, le délai de promesse ne peut pas être utilisé dans sinonTest()
? Par ailleurs, j'ai eu ce problème lors de la mise à niveau sinon
de 1.17.6
à 2.4.1
. Merci
Si '{useFakeTimers: false}' est défini, 'delay' ne fonctionnera pas? – BAE
Je prends le code dans votre question, le plop dans un nouveau fichier, éditez pour ajouter le 2ème paramètre '{useFakeTimers: false}', installez les paquets requis et exécutez Mocha et cela fonctionne. Je reçois toutes les sorties 'console.log' et il n'y a pas de temps mort. Cela a fonctionné quand je l'ai fait avant d'écrire ma réponse et cela fonctionne maintenant. Vous devez faire quelque chose de mal. – Louis
oui. il fonctionne maintenant. Vous avez résolu plusieurs questions à moi. Merci. Mais je suis juste confus. Pourquoi dans mon projet, il n'y a pas de problèmes avec les tests existants où 'useFakeTimers' n'est pas défini? – BAE