459 votes

Comment augmenter le délai d'attente pour un seul scénario de test dans mocha ?

Je soumets une demande de réseau dans un cas de test, mais cela prend parfois plus de 2 secondes (le délai par défaut).

Comment augmenter le délai d'attente pour un seul cas de test ?

17voto

David Souther Points 4414

Vous pouvez également envisager d'adopter une approche différente et de remplacer l'appel à la ressource réseau par un stub ou un objet fantaisie. Utilisation de Sinon vous pouvez découpler l'application du service réseau et concentrer vos efforts de développement.

7 votes

Ce n'est pas entièrement pas pertinent ; fréquemment, il est judicieux de stub la réponse du réseau afin de ne pas dépendre de la disponibilité de la machine ou du retour de la réponse correcte. Cependant, si vous testez la réponse elle-même, alors oui, vous devez quand même le faire.

2 votes

J'utilise sinon/mocha pour construire des tests d'intégration, donc des délais plus élevés sont pertinents.

14voto

alditis Points 1496

Pour la navigation d'essai sur Express :

const request = require('supertest');
const server = require('../bin/www');

describe('navigation', () => {
    it('login page', function(done) {
        this.timeout(4000);
        const timeOut = setTimeout(done, 3500);

        request(server)
            .get('/login')
            .expect(200)
            .then(res => {
                res.text.should.include('Login');
                clearTimeout(timeOut);
                done();
            })
            .catch(err => {
                console.log(this.test.fullTitle(), err);
                clearTimeout(timeOut);
                done(err);
            });
    });
});

Dans l'exemple, le temps de test est de 4000 (4s).

Note : setTimeout(done, 3500) est mineur pour que done est appelé pendant la durée du test mais clearTimeout(timeOut) il évite d'être utilisé pendant tout ce temps.

12voto

Otpidus Points 149

Cela a marché pour moi ! Je n'ai rien trouvé pour que ça marche avec before().

describe("When in a long running test", () => {
  it("Should not time out with 2000ms", async () => {
    let service = new SomeService();
    let result = await service.callToLongRunningProcess();
    expect(result).to.be.true;
  }).timeout(10000); // Custom Timeout 
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X