chai-http和async.each,抛出“超出2000ms超时......”

时间:2017-01-26 01:44:43

标签: node.js chai async.js chai-http

我用chai-http进行了一个简单的测试,其中我尝试使用async.each测试几个URL,但是当请求超过2秒时,我得到了错误。

it("it should GET the required images", (done) => {
    async.each(get_data, function(item, cb){
      chai
        .request(item.server_url.S)
        .get('/'+ item.endpoint.S + '?' + item.incoming.S)
        .end(function(err, res) {
          if(err) console.error(err);
          expect(err).to.be.null;
          expect(res).to.have.status(200);
          cb();
        });
    }, function(err){
      if(err) console.log(err);
      done();
    });
  });

我称之为“完成”,因为我认为是正确的,但我不断收到错误,我做错了什么?错误显示即使没有异步,只有简单的chai请求,只有一个请求...所以非常肯定不是异步问题,但我使用chaiHttp坏。

我也试过“then / catch”而不是“end”,但结果是一样的。

我有一个类似的问题,在相同的测试脚本中,但是对于DB,如果查询需要超过2秒,它会中断...同样的错误,也使用“完成”:

before((done) => {
  // runs before all tests in this block
  const params = {
    TableName: "mytable"
  };

  mydb.scan(params, (err, records) => {
    if(err) console.log(err);
    for(let i = 0; i < records.Items.length; i++){
      //...some ifs, nothing async
    }
    done();
  });
});

2 个答案:

答案 0 :(得分:1)

如果您的测试时间超过2000毫秒,请考虑延长测试的超时时间以解决您的问题

it("it should GET the required images", (done) => {
   this.timeout(5000);
   //...

答案 1 :(得分:0)

使用this.timeout()方法给予您多次完成测试所需的时间

it('it should solve the timeout issue of a test in test level', function(done) {
    this.timeout(10000);
    done();
});