我使用承诺在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);
});
答案 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秒后挂起并超时。