在mocha集成测试期间不执行请求

时间:2016-06-21 08:00:56

标签: node.js request mocha integration-testing web-api-testing

在交换API之前,我想通过集成测试保护客户端(使用API​​),以确保新API提供与旧API相同的结果,并且客户端仍然按预期工作。因此,我为各自的客户端方法编写了几个集成测试。这些客户端方法使用请求来查询API 然后我使用mocha来执行测试。在测试中,现在似乎根本没有执行请求。

我举了一个简单的例子来说明我的问题:

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,并且测试始终在断言中失败。

2 个答案:

答案 0 :(得分:1)

尝试将断言和done()调用放在回调中。

答案 1 :(得分: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();   
          }                   
      });
   });
});