【问题标题】:Request is not executed during mocha integration testmocha 集成测试期间未执行请求
【发布时间】:2016-06-21 08:00:56
【问题描述】:

在交换 API 之前,我想通过集成测试来保护客户端(使用 API),以确保新 API 提供与旧 API 相同的结果,并且客户端仍按预期工作。因此,我为各自的客户端方法编写了几个集成测试。这些客户端方法使用 request 来查询 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 永远不会被执行,并且测试总是在断言中失败。

【问题讨论】:

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


    【解决方案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();   
              }                   
          });
       });
    });
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-07
        • 1970-01-01
        • 2016-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多