2016-12-08 8 views
1

私のコードはajax経由でサーバーからデータを取り出し、約束を使用します。ユニットテストのjavascriptの約束

このコードの単位テキストはどのように記述しますか?

function getPromise(){ 
    var p = new Promise(function(resolve, reject) { 
    http.get({ 
     host: 'localhost', 
     port: 3000, 
     path: '/blist' 
    }, function(res) { 
     if(res.statusCode < 200 || res.statusCode>300) { 
     reject('statusCode=' + res.statusCode); 
     return; 
     } 
     var data=""; 
     res.on('data', function (chunk) { 
     data += chunk; 
     resolve(data); 
     return; 
     }); 
     res.on('error', function(error) { 
     console.log("Got error: " + e.message); 
     reject(error); 
     }); 
    }) 
    }); 
    return p; 
} 
+0

あなたのシナリオをテストするための機能が、あなたはより多くの凝縮例を追加することはできますか? – MoeSattler

+0

あなたは今まで何を試しましたか? – EhsanT

+0

iはgetPromise() module.exportsは= { \t \t \tリストを呼び出すために、このFUNC作成:関数(REQ、RES){ \t \t \t \tするvar P = getPromiseを(); \t \t \t \t p.then(関数(データ){ \t \t \t \t res.send(データ); \t \t \t})。キャッチ(関数(ERR){ \t \t \t \tはconsole.log(ERR ); \t \t \t}) \t \t \t} \t \t} – flower

答えて

0

あなたが、私はつもりあなたが偽の場合に予想される何を行うのかどうか、あなたが約束の機能をテストしたいと思います推測nockとサーバの応答を模擬し、mocha

describe('promise' function (done) { 
    getPromise.then(response => { 
    // assert response 
    done() 
    }) 
} 
+0

あなたは何を意味するのですか? – flower

0

を経て約束の価値を主張することができますhttpコール。

これは、httpオブジェクトとそれを模擬してテストでの成功とエラー応答をシミュレートできるようにパラメータとして取るコールバックを渡すことを検討したいと思うかもしれません。

getPromise(http, req, callback) { 
    var promise = new Promise((resolve, reject) -> { 
    http.get(req, callback); 
    callback.on('data', data -> { // Resolve or reject looking at the status code }) 
    }) 
    return promise; 
} 

ような何か次に、あなたのコールバックを模擬することができますだけでなく、HTTP GET#