2016-07-25 24 views
0

Ich habe Funktion, die Versprechen versprechen. Hier ist der Funktionscode.Testfall für die Funktion, die Async-Funktion mit Mocha und Chai ruft

function firstFunction() { 
    return new Promise (function (resolve , return) { 
      callApi(function(data, error){ 
        if (data) resolve (data) 
        else if (error) reject (error) 
      }) 
    }) 
} 

wie Sie sehen können, ruft es einige API und Ergebnis seine zurückkehrenden Daten.

Ich habe eine andere Funktion, die diese Funktion aufrufen

function secondFunction() { 
    firstFunction().then(function (data , error) { 
      return data 
    }) 
} 

Jetzt habe ich Testfall für die second schreiben möchten. aber nicht in der Lage das zu tun. Ich habe Logger auch in den Funktionen scheint aber nicht funktioniert, hier ist mein Testfall

describe.only ("network_test" , function() { 
     it ("test 01", function (done){ 

     secondFunction (function (data) { 
      console.log(data); 
      done() 
     }) 
     }) 
    }) 

Antwort

0

Versprechen testen Sie das Versprechen in der Mokka Test zurückgeben sollte und nicht done verwenden.

sollte Ihr Test so etwas wie:

describe.only('network_test', function() { 
    it('test 01', function() { 
     return secondFunction(function (data) { 
      console.log(data); 
     }); 
    }); 
}); 

Update: In Bezug auf Ihre Bemerkung: Überprüfen Sie die Fehlerbehandlungsroutinen, in firstFunctionrejectundefinded ist. in secondFunction ein Fehler wird das Versprechen, nie zu lösen.

+0

funktioniert nicht. Es bleibt zu sagen Fehler: Timeout von 15000ms überschritten. Stellen Sie sicher, dass der Rückruf done() in diesem Test aufgerufen wird. testfall für firstFunction arbeitet thogh –