2016-07-19 18 views
1

Im mit Mocha, um meine API zu testen, ist das Problem, dass diese Funktion async und die Testsuite aufgerufen wird, bevor ich die Ergebnisse aus der Funktion, wie kann ich das überwinden?Komponententest mit Versprechen funktioniert nicht

Ich versuche, den Test wie folgt zu verketten, die einen Fehler auslösen Leere Test-Suite.

describe("Validations", function() { 

    var validator = require('../utils/validator'); 
    var isValid = null; 

    validator.validateJS() 
     .then(function (args) { 
      isValid = args; 
     }).then(function(){ 
     it("init validations ", function() { 
      expect(isValid).to.equal('valid1'); 
     }); 
    }); 

}) 

Meine erste Nutzung ist wie folgt, die, wenn sich Aufruf der es und erwarten innen vor der Antwort (isValid) aus dem Versprechen kommt, jede Idee?

describe("Validations", function() { 

    var validator = require('../utils/validator'); 
    var isValid = null; 



    validator.validateJS() 
     .then(function (args) { 
      isValid = args; 

     }).done(); 

    it("init validations ", function() { 
     expect(isValid).to.equal('valid1'); 
    }); 

}) 
+0

Ist der validatJS hier ein Fehlbuchstabier oder ist es auch in Ihrem Code? –

+0

@VassilisPits - Tippfehler, danke :) eine Idee, wie Sie diesen Test durchführen? –

+1

Warum nicht Mochas 'before()' verwenden? – Fissio

Antwort

1

Verwenden Sie Mochas before().

describe("Validations", function() { 

    var validator = require('../utils/validator'); 
    var isValid = null; 

    before(function(done) { 
     validator.validateJS() 
     .then(function (args) { 
      isValid = args; 
      done(); 
     }) 
    }) 

    it("init validations ", function() { 
     expect(isValid).to.equal('valid1'); 
    }); 
}) 
Verwandte Themen