Javascript 测试功能无效 我在MoCa测试期间使用承诺等待脸谱网API响应。我想知道为什么expect函数实际上没有检查数据是否包含在响应中

Javascript 测试功能无效 我在MoCa测试期间使用承诺等待脸谱网API响应。我想知道为什么expect函数实际上没有检查数据是否包含在响应中,javascript,mocha.js,Javascript,Mocha.js,我在控制台中看到resolve,这表明图形调用已工作,承诺已解决,但测试通过,即使事件未在expect(data).to.include语句中包含随机数据。当承诺解决时,我如何测试响应 var promise = new Promise(function(resolve, reject) { var eventFB1 = graph.get('132166232459578/posts', {limit: 1, access_token: 't0k3n' });

我在控制台中看到
resolve
,这表明图形调用已工作,承诺已解决,但测试通过,即使事件未在
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 
    });
}

it('should have included string for data',(done)=>{//这在文档中有介绍。文档中介绍了很多内容,但对每个人来说都不明显,因此他们在这里寻求支持。这不是一种有效的方法吗?有趣的是,文档似乎将对我有用的答案(以下)描述为错误的:“在Mocha v3.0.0及更新版本中,返回承诺并调用done()将导致异常,因为这通常是一个错误:"我不是想侮辱你,但是“异步代码”是文档目录中的第四个条目。它就在主页的折叠下面。对文档最粗略的检查应该会发现这一点。更不用说谷歌搜索“摩卡异步测试”时弹出的所有优秀内容了。我在这里问了一个明显的问题t次,但至少有礼貌地说“哎呀,我的坏”。我不认为这是一种侮辱,只是说我已经浏览了文档,发现了一条似乎适合我的用例的语句(即
承诺
),并警告不要使用
done()
。你肯定能看到我的困惑吗?不知道为什么我对这个答案投了反对票。耸耸肩: