2016-06-21 60 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()调用。