2017-08-11 2 views
0

Hallo Ich bekomme diesen Fehler, wenn ich meine Tests lese Ich habe die Versprechungen gelesen und bin immer noch nicht sicher, wo ich es in meinen Test einbauen soll oder ob es am besten ist, vor jedem zu tun um Wiederholung zu sparen? Wo und was wäre der beste Weg, das fertige Versprechen umzusetzen?Zufällig fehlgeschlagen JS Tests

Fehler: Timeout von 2000ms überschritten. Stellen Sie für asynchrone Tests und Hooks sicher, dass "done()" aufgerufen wird; Wenn Sie eine Versprechung zurückgeben, stellen Sie sicher, dass sie verrechnet wird.

const chakram = require('chakram'); 
const expect = chakram.expect; 


describe("Json assertions", function() { 
    it("Should return the matching test file and have a 200 response", function() { 

     let expected = require('../../test/fixtures/testfile.json'); 
     let response = chakram.get("http://test"); 
     expect(response).to.have.json(expected); 
     expect(response).to.have.status(200); 
     return chakram.wait(); 
    }); 
}); 
+1

Nun, was ist, wenn "http: // test" nicht verfügbar ist? Wird sich das Versprechen jemals lösen? – Bergi

Antwort

0

Ich bin nicht vertraut mit chakram, aber in der Regel hier ist ein Muster, das mit dem Testen Sie Ihre Versprechen (mit done) funktionieren soll:

describe('Test Suite', function() { 
    it('should do something...', function(done) { 
    const testValue = 'testValue'; 
    someAsyncFunction(testValue).then(function(result) { 
     result.should.have.property('foo'); 
     result.should.have.property('bar'); 
     done(); 
    }); 
    ]); 
}); 

nun für das, was Sie haben, sieht es aus wie die docs for Chakram zeige, wie man mit Versprechungen testet (unter dem Promises-Header). Also Ihr angepasst Code so etwas wie sein würde:

const chakram = require('chakram'); 
const expect = chakram.expect; 

describe("Json assertions", function() { 
    it("should...", function() { 
    let expected = require('../../test/fixtures/testfile.json'); 
    chakram.get("http://test").then(function(response) { 
     expect(response).to.have.json(expected); 
     expect(response).to.have.status(200); 
    }); 
    }); 
}); 

Noch einmal, ich weiß es nicht, dass die Bibliothek, aber wenn Ihr Test Läufer noch die done beklagt, fügen done etwa so:

describe("Json assertions", function() { 
    it("should...", function (done) { 
    let expected = require('../../test/fixtures/testfile.json'); 
    chakram.get("http://test").then(function(response) { 
     expect(response).to.have.json(expected); 
     expect(response).to.have.status(200); 
     done(); 
    }); 
    }); 
}); 

Edit: done war in describe Block, und sollte in it gewesen sein.

+0

Danke. Das war sehr nützlich. –

Verwandte Themen