2014-01-16 34 views
3

我正在嘗試使用done();調用寫一個asynchronous測試與mocha。這是我的代碼到目前爲止。然而如何使用mocha使用'done();'進行異步測試?

it('should have data.', function() { 
    db.put(collection, key, json_payload) 
     .then(function (result) { 
      result.should.exist; 
      done(); 
     }) 
     .fail(function (err) { 
      err.should.not.exist; 
      done(); 
     }) 
}) 

其結果是,代碼只是執行,而無需等待爲當時還是無法與實際的結果返回。 done();需要在代碼中的不同位置嗎?

還貼出了整個回購在這裏:https://github.com/Adron/node_testing_testing

+0

糾正我,如果我錯了,但不傳遞給''''調用的函數需要'done'參數? '它(「應該具有的內容」,功能(完成){''與它(「應該具有的內容」,函數(){'[與摩卡測試異步函數](HTTP的 – juanpaco

+0

可能重複:// stackoverflow.com/questions/12159846/testing-asynchronous-function-with-mocha) – Louis

+0

@juanpaco是的,看看下面的答案被notmyself。 – Adron

回答

3

如果你想要一個異步測試,你需要處理進行了參數

it('should have data.', function (done) { 
    db.put(collection, key, json_payload) 
     .then(function (result) { 
      result.should.exist; 
      done(); 
     }) 
     .fail(function (err) { 
      err.should.not.exist; 
      done(); 
     }) 
}) 

此外,如果你正在使用q作爲承諾庫,你可能想完成鏈像這樣。

it('should have data.', function (done) { 
    db.put(collection, key, json_payload) 
     .then(function (result) { 
      result.should.exist; 
     }) 
     .fail(function (err) { 
      err.should.not.exist; 

     }) 
     .done(done,done) 
}) 
+0

都嘗試...我還沒有得到任何東西出來的。後來還是.fail: - 。/ – Adron

+0

增加完整的回購,所以你可以給它一個去。把所有的東西ING在裏面。包括Webstorm .idea目錄。這只是幾位代碼。不知道我在這裏實際做了什麼。 : -/ – Adron

+0

哦,等等,我看到哪兒......哦,夥計,我的大腦現在扭曲了。我會得到這個Javascript的東西呢。 ;) 的我第一次嘗試它,我錯過了「做」傳遞到回調。這很重要! – Adron

2

我想你的意思是實際調用done()回調。

it('should have data.', function() { 
    db.put(collection, key, json_payload) 
     .then(function (result) { 
      result.should.exist; 
      done(); 
     }) 
     .fail(function (err) { 
      err.should.not.exist; 
      done(); 
     }) 
}) 
+0

固定在(),它只是就剩我在上面貼的代碼,但是這似乎並沒有解決這個問題。:( – Adron

+0

加滿回購所以你可以給它一個去。把它的一切。包括Webstorm。 。想法目錄它的代碼只是幾個位不知道我其實在這裏做: - 。/ – Adron

相關問題