Antworten:
Sie können es (jetzt) direkt in der Spezifikation gemäß den Jasmine-Dokumenten einstellen .
describe("long asynchronous specs", function() {
var originalTimeout;
beforeEach(function() {
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
});
it("takes a long time", function(done) {
setTimeout(function() {
done();
}, 9000);
});
afterEach(function() {
jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
});
});
Pull-Anfrage für diese Funktion gesendet ( https://github.com/mhevery/jasmine-node/pull/142 )
it("cannot change timeout", function(done) {
request("http://localhost:3000/hello", function(error, response, body){
expect(body).toEqual("hello world");
done();
});
}, 5000); // set timeout to 5 seconds
Gehen Sie folgendermaßen vor, um das globale Jasmin-Knoten-Zeitlimit festzulegen:
jasmine.getEnv().defaultTimeoutInterval = timeoutYouWouldPrefer;// e.g. 15000 milliseconds
Dank an Entwickler Gabe Hicks für das Herausfinden des .getEnv () - Teils durch Debuggen trotz Fehlinformationen im README-Dokument, das behauptet, dies sei durch Setzen von jasmine.DEFAULT_TIMEOUT_INTERVAL geschehen.
Wenn Sie ein benutzerdefiniertes Zeitlimit nur für ein it () festlegen möchten, können Sie versuchen, das Zeitlimit (Millisekunden) als drittes Argument (nach der Zeichenfolgenanweisung und der Funktion) zu übergeben. Es ist ein Beispiel dafür , dass getan wird hier , aber ich bin sicher nicht das, was , wenn das benutzerdefinierte Timeout passieren würde , ist länger als Jasmins Standard. Ich gehe davon aus, dass es scheitern würde.
jasmine.DEFAULT_TIMEOUT_INTERVAL = 12000;
eine globale Konfigurationsdatei hinzugefügt, die ich für alle Tests verwende, und sie funktioniert wie erwartet.
Setzen Sie es nach describe
Aussage:
describe("A saves to DB", function() {
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
Warum nicht durch Ausspionieren setTimeout()
?
Etwas wie:
var spy = spyOn(window, 'setTimeout').andCallFake(function (func, timeout) {
expect(timeout).toEqual(2500);
func();
});
setTimeOut(function () { ... }, 2500);
expect(spy).toHaveBeenCalled();
Hinzufügen: jasmine.DEFAULT_TIMEOUT_INTERVAL = yourTime;
auf einer Hilfedatei hat bei mir funktioniert.
In meinem Fall hatte ich mehrere Testfälle und während ich die oben genannte Lösung mit verwendete, verwendete ich:
beforeEach(function() {
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
});
Das DEFAULT_TIMEOUT_INTERVAL wurde beim ersten Testfall nicht aktualisiert, daher musste ich Folgendes hinzufügen:
beforeAll(() => {
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
})
zu meinem Code, um alle Tests erfolgreich auszuführen.
Ändern Sie j $ .DEFAULT_TIMEOUT_INTERVAL in der folgenden Datei in 10000: npm \ node_modules \ jasmine-core \ lib \ jasmine-core
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
Wertänderung hat mir bei einem brandneuen Setup geholfen, das mit Jasmine + Jest von Grund auf neu erstellt wurde. Es funktioniert wie erwartet.