2016-11-30 5 views
0

私はe2eテスト(分度器、ジャスミン)を書くよ リソースを作成、テスト、そして削除するためにAPIを何度も呼び出さなければならない(ページネーションテスト)。 私はrequest-promise + coアプローチを使用しました(下の要点を参照)。 しかし、My Jasmine Testは、すべてのAPIリクエストがいつ完了するかを知る必要があります。 APIの実行が完了したことを示すにはどうすればよいですか?ジャスミンセットアップ/クリーンアップにすべてのAPIリクエストが伝わったことを伝える方法

//Jasmine test // AUT = app under test // HCS = some resouce to be created multiple times to test pagination 
// defaultData has 11 defaultHCSID in array 

describe ("Test: Create 11 HCSes to test pagination", function() { 
    beforeAll(function (done) { 
     AUT.api.defaultHCS.create(defaultData).then(()=> { 
      done(); 
      //setTimeout(function() {done();}, AUT.API_TIMEOUT); 
     }); 
    }); 
.. 
rest of the test. 
.. 

//appointments defaultHCS Api.js 
var co = require('co'); 
var _ = require('lodash'); 
var rp = require('request-promise'); 
var urlLogin ={url:"<URL>", body:"<body>" method: 'POST', headers: {"Content-Type": "application/json"}, json: true} 
var urlDefaultHCSSave ={url:"<URL>", body:"<body>" method: 'POST', headers: {"Content-Type": "application/json"}, json: true} 

exports.create = function (customTestData) { 
    return co(function*() { 
     var response, token, testData; 
     testData = customTestData || defaultTestData; 
     response = yield rp(urlLogin); 
      urlDefaultHCSSave.headers["x-auth-token"] = response.token; 

     var size= _.size(testData.defaultHCSID); 
     process.stdout.write("API DEFAULT HCS Create. Size: " + size + " "); 
     var total = 0; 
     testData.defaultHCSID.forEach(function (item,i){ 
      return co(function*() { 
       response = yield rp(defaultHCSSave); //parsedBody 
       total+=1; 
       if (total === size){ process.stdout.write("All Done\n");  } 
      }).catch(function (err) {console.error(err.stack); }) 
     }); 
    }); 
}; 

答えて

0

forEach for..of`が働い 」でそれを置き換える、ノンブロッキング、非同期です。 (ブロッキング、同期)

関連する問題