2016-07-25 87 views
0

我有返回承諾的功能。這裏是函數的代碼。用摩卡和chai調用異步功能的功能的測試用例

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

正如你所看到的,它正在調用一些api,並根據結果返回數據。

我有我想要寫測試用例的secondfunction它調用這個函數

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

現在另一個功能。但無法做到這一點。我把記錄器也在功能,但似乎不工作,這是我的測試案例

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

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

回答

0

要測試的承諾,你應該在摩卡測試返回的承諾,而不是使用done

您的測試應該是這樣的:

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

更新: 關於你的評論:檢查你的錯誤處理程序,在firstFunctionrejectundefinded。在secondFunction的錯誤會使承諾永遠不會解決。

+0

無法正常工作。它一直說 錯誤:超過15000ms超時。確保在此測試中正在調用done()回調。 firstFunction的測試用例正在工作 –