2016-08-08 8 views
0

Unten ist der Code, den ich mit Mocha, Chai und Supertest geschrieben habe. Ich habe eine Frage in Bezug auf das darunterliegende Code-Segment mit Fokus auf Token.Supertest/Mocha Done-Parameter bestanden innerhalb von Tests

describe('Authenticated userTest', function() { 
    var token; 

    before(function loginAuth(done) { 
     request(app) 
      .post("/login/local") 
      .send("username=testName") 
      .send("password=qwe123QWE") 
      .expect(function (res) { 
       should.exist(res.body.token); 
       token = res.body.token; 
      }) 
      .end(done); 
    }); 

    it('should give me a defined token', function(done) { 
     console.log("token is " + token); 
     done(); 
    }); 
}); 

Anscheinend ist Token alles gut und gut hier definiert. Wenn ich jedoch die Done-Funktion wie folgt entferne:

describe('Authenticated userTest', function() { 
    var token; 

    before(function loginAuth() { //done is removed here 
     request(app) 
      .post("/login/local") 
      .send("username=testName") 
      .send("password=qwe123QWE") 
      .expect(function (res) { 
       should.exist(res.body.token); 
       token = res.body.token; 
      }) 
      .end(); //done is removed here 
    }); 

    it('should give me a defined token', function(done) { 
     console.log("token is " + token); 
     done(); 
    }); 
}); 

Token wird undefiniert. Von dem, was ich verstehe, ist eine Funktion, die von dem Vorher-Hook an alle verschiedenen nachfolgenden Tests übergeben wird, die mit it(...) aus dem eingebauten Quellcode beginnt.

Also, ich möchte diese spezielle Frage klären (wenn getan wird nur über die Tests bestanden; wenn getan nur akzeptiert den Parameter err) und warum wurde das Token undefiniert nach dem Entfernen der Done-Parameter?

Vielen Dank.

Antwort

Verwandte Themen