2016-06-21 59 views
0

在交換API之前,我想通過集成測試來保護客戶端(使用API​​)以確保新API提供與舊客戶端和客戶端相同的結果按預期工作。因此,我爲相應的客戶端方法編寫了幾個集成測試。這些客戶端方法使用請求來查詢API。
我然後使用摩卡來執行測試。在測試中,現在看來這些請求根本不被執行。請求在摩卡集成測試期間未被執行

我做了一個簡單的例子來說明我的問題:

var request = require('request'); 
var assert = require('chai').assert; 

describe('test', function(){ 
    it('request-test', function(done){ 
     var responseBody; 
     request('http://www.google.com', function (error, response, body) { 
      if (!error && response.statusCode == 200) { 
       console.log(body) 
       responseBody = body;  
      }     
     }); 
     done(); 
     assert.notEqual(responseBody, undefined); 
    }); 
}); 

在這個例子中是從來沒有執行的console.log和測試總是在斷言失敗。

回答

1

done()的位置存在問題。 done()用於測試異步代碼。

在回調中使用它來正確執行測試用例。

var request = require('request'); 
var assert = require('chai').assert; 

describe('test', function(){ 
    it('request-test', function(done){ 
     var responseBody; 
     request('http://www.google.com', function (error, response, body) { 
      if (!error && response.statusCode == 200) { 
       responseBody = body; 
       assert.notEqual(responseBody, undefined); 
       done(); 
      }     
     }); 
    }); 
}); 
1

嘗試在回調中放置斷言和done()調用。