测试功能无效

Test functions ineffective

本文关键字:无效 功能 测试      更新时间:2023-09-26

我使用了一个承诺,在Mocha测试过程中等待Facebook API的响应。我想知道为什么expect函数实际上没有检查数据是否包含在响应中。

我在控制台中看到resolve,这表明图形调用有效,promise得到了解决,但测试通过了,尽管事件在expect(data).to.include语句中不包括随机数据。当承诺解决时,我如何获得测试响应?

 var promise = new Promise(function(resolve, reject) {
 var eventFB1 = graph.get('132166232459578/posts',
   {limit: 1,
     access_token: 't0k3n'
   });
  if (typeof eventFB1 !== 'undefined') {
    resolve(eventFB1);
    console.log('resolve');
  }
  else {
    reject(Error("It broke"));
    console.log('reject');
  }
  });
  return promise.then(function(data) {
    expect(data).to.include( 'Event name: Testing London eveng 23498723rstni' );
    console.log(data);
});

您需要将done作为参数传递给测试,然后在"then"方法中调用它。done参数告诉mocha指定的测试已经完成。

it('should have the included string for data', (done) => { // <-- add done as argument
  var promise = new Promise(function(resolve, reject) {
    var eventFB1 = graph.get('132166232459578/posts',
    {
      limit: 1,
      access_token: 't0k3n'
    });
    if (typeof eventFB1 !== 'undefined') {
      resolve(eventFB1);
      console.log('resolve');
    }
    else {
      reject(Error("It broke"));
      console.log('reject');
    }
  });
  return promise
    .then(function(data) {
      expect(data).to.include( 'Event name: Testing London eveng 23498723rstni' );
      console.log(data);
      done(); // <-- call done 
    });
}

如果您的测试抛出错误,并且在catch块中未调用done,则您的测试将挂起,并在2秒后超时。