2016-08-03 5 views
-1

私は、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

多くのものはドキュメントでカバーされていますが、誰にも分かりませんので、ここでサポートを求めています。それは有効なアプローチではありませんか?興味深いことに、私のために働くことが判明した答えは、以下のように誤っているようです:http://mochajs.org "Mocha v3.0.0以降では、Promiseを返してdone()呼び出し「 – KindOfGuy

+0

私は侮辱するつもりはありませんが、「非同期コード」はドキュメントの目次の**第4エントリです**。それはホームページの折りたたみのすぐ下にあります。ドキュメントの最も慎重な点検はそれを捕らえていたはずです。あなたがgoogle 'mocha非同期テスト'ならポップアップする優れたものはもちろんのこと、私は時には明白なものについてもここで尋ねましたが、少なくとも、「おっと、私の悪い」と言う猶予があります。 –

答えて

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ブロックで呼び出されていない行っている場合は、あなたのテストがハングアウト時間2秒後になります。

+1

なぜ私はこの答えの投票を得たか分かりません。 ::ショルズ:: – VtoCorleone