461 Stimmen

Wie kann ich das Timeout für ein einzelnes Testfall in Mocha erhöhen?

Ich sende eine Netzwerkanfrage in einem Testfall ab, aber manchmal dauert es länger als 2 Sekunden (das Standard-Zeitlimit).

Wie kann ich das Zeitlimit für einen einzelnen Testfall erhöhen?

17voto

David Souther Punkte 8015

Sie könnten auch darüber nachdenken, einen anderen Ansatz zu wählen und den Aufruf der Netzwerkressource durch ein Stub- oder Mock-Objekt zu ersetzen. Mit Sinon können Sie die App vom Netzwerkdienst entkoppeln und sich auf Ihre Entwicklungsarbeit konzentrieren.

14voto

alditis Punkte 4271

Für die Testnavigation auf Express:

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

describe('navigation', () => {
    it('Login-Seite', 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);
            });
    });
});

In diesem Beispiel beträgt die Testzeit 4000 (4s).

Hinweis: setTimeout(done, 3500) ist geringer als done innerhalb der Testzeit aufgerufen wird, aber clearTimeout(timeOut) vermeidet, dass die gesamte Zeit verwendet wird.

13voto

Otpidus Punkte 439

Dies hat für mich funktioniert! Konnte nichts finden, um es mit before() zu machen

describe("Wenn ein lang laufender Test läuft", () => {
  it("Sollte nicht nach 2000 ms abbrechen", async () => {
    let service = new SomeService();
    let result = await service.callToLongRunningProcess();
    expect(result).to.be.true;
  }).timeout(10000); // Benutzerdefiniertes Timeout 
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X