测试功能无效

时间:2016-08-03 22:41:42

标签: javascript mocha

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

我在控制台中看到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);
});

1 个答案:

答案 0 :(得分:0)

您需要将完成作为参数传入测试,然后使用“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秒后挂起并超时。