2016-06-28 2 views
0

私のprotractorテストでAPIを呼び出すために次の関数を使用していますが、APIが応答するのに時間がかかることがあります。テストスクリプトでRest APIが分度器で応答するのを待つ方法

var request = require("superagent"); 
var PostUrl = browser.baseUrl + 'rest/1.0/dev/users'; 
var CreateTenantUrl = browser.baseUrl + 'rest/1.0/tenant'; 

exports.CreateTenant = function(body){ 
var data = '{' + body + '}';  
request.post(CreateTenantUrl).set('Content-Type', 'application/json').set('serviceSharedSecret', 'sharedsecret').send(data).end(function(err,res){ 
     if(err){ 
      console.log("CreateTenant post error= ", err) 
     } else{ 
      console.log("CreateTenant post response = ", res.status) 
     } 
     expect(res.status).toEqual(200) 
    });  
}; 

exports.CreateUsers = function(body){ 
    var data = '{' +body + '}'; 
    request.post(PostUrl).set('Content-Type', 'application/json').send(data).end(function(err,res){ 
if(err){ 
     console.log("CreateUsers post error= ", err) 
    } else{ 
     console.log("CreateUsers post response = ", res.status) 
    } 
expect(res.status).toEqual(202) 
});    
}; 

コールこれらの機能:

Common.CreateTenant('"tid": "1","long_name": "test tenant"'); 
Common.CreateUsers('"userName": "test1", "tenantKey": "1", "password": "Test1", "userID": "1"'); 

次のいずれかを、各APIの呼び出しが完了するのを待って配置し、実行する方法はありますか?

答えて

1

2番目のAPI呼び出しが最初の呼び出しが完了した後にのみ起動する必要がある場合は、2番目のAPI呼び出しを最初のAPI呼び出しのコールバックメソッドで送信します。

API呼び出しが完了するのを待っていることは、非常に悪いことです。たとえば、1つのAPI呼び出しを10秒間送信し、1回目の呼び出しが完了したかどうかを確認し、2つ目のAPI呼び出しを送信します。そうでない場合は、さらに10秒待ってプロセスを繰り返します。

ほとんどの場合、API呼び出しが完了したときに通知されるコールバックを使用することをお勧めします。ご例えば

、次の操作を行う必要があります。

var request = require("superagent"); 
var PostUrl = browser.baseUrl + 'rest/1.0/dev/users'; 
var CreateTenantUrl = browser.baseUrl + 'rest/1.0/tenant'; 

exports.CreateTenant = function(body){ 
var data = '{' + body + '}';  
request.post(CreateTenantUrl).set('Content-Type', 'application/json').set('serviceSharedSecret', 'sharedsecret').send(data).end(function(err,res){ 
     if(err){ 
      console.log("CreateTenant post error= ", err) 
     } else{ 
      console.log("CreateTenant post response = ", res.status) 

      //Create user once tenant has been successfully created 
      Commons.CreateUsers('"userName": "test1", "tenantKey": "1", "password": "Test1", "userID": "1"'); 


     } 
     expect(res.status).toEqual(200) 
    });  
}; 

exports.CreateUsers = function(body){ 
    var data = '{' +body + '}'; 
    request.post(PostUrl).set('Content-Type', 'application/json').send(data).end(function(err,res){ 
if(err){ 
     console.log("CreateUsers post error= ", err) 
    } else{ 
     console.log("CreateUsers post response = ", res.status) 
    } 
expect(res.status).toEqual(202) 
});    
}; 
+0

HI @Nicholas Ackerman、私は上記の関数をコードで提案していますが、問題は 'request.post(CreateTenantUrl).set( 'Content-Type'、 'application/json')です。ステータス200で応答するのに時間がかかるので、 'Commons.CreateUsers( '" userName ":" test1 "、" tenantKey " : "1"、 "パスワード": "Test1"、 "userID": "1" ')コールが実行されていませんどうすればいいですか? – ssharma

関連する問題