[英]How to fix the dependent REST API call in protractor
用打字稿寫了量角器規格文件。 包含兩個it塊。 每個IT塊都調用一個POST REST API。 第一個是調用身份驗證API,如果身份驗證成功,該API將返回cookie值。 第二個API需要將此經過身份驗證的cookie與JSON有效負載一起設置在請求標頭中。
問題在於僅首次運行的身份驗證API可以使用,並且它返回cookie,但不會創建資源。 如果我再次運行,資源將被創建。
以下是我的規格文件:
import { Utility } from "../../../commonLibraries/utility";
describe("Test API calls", ()=>{
let utility = new Utility();
let request = require('request');
let cookiesValue: any;
let cookie_value: any;
let uniqueID = utility.getUniqueUserName();
it("Login using API", ()=>{
cookie_value = new Promise((resolve, reject)=>{
request.post('https://www.myserver.com/web/json/login',{
form: {
username: 'xxxxxxx',
password: 'xxxxxxx'
},
rejectUnauthorized:false,
headers:{
'Content-Type': 'application/json'
}
}, (error, httpResopnse, body)=>{
if(error){
console.log("Error: ", error);
reject(error);
}
cookiesValue = httpResopnse.headers['set-cookie'][1];
resolve(cookiesValue);
});
});
});
it("Create Resource", ()=>{
console.log(accessioningID)
cookie_value.then((data1)=>{
const json_data = {
"Resource": {
"Id": null,
"accId": accessioningID,
"someData": "Some Data here"
}
};
console.log(data1);
request.post( {uri: 'https://www.myserver.com/web/json/resource',
body: JSON.stringify(json_data),
rejectUnauthorized:false,
headers:{
'Content-Type': 'application/json',
'Cookie': data1
},
}, (error, httpResopnse, body)=>{
if(error){
console.log("Error: ", error);
}
//console.log("Response: ", httpResopnse.statusCode);
console.log("Response: ", httpResopnse);
console.log("Body ", body)
});
});
});
});
它應該同時執行API和資源。
如文檔中所指定的請求(在此處找到) https://www.npmjs.com/package/request#promises--asyncawait
如果您希望請求返回一個Promise,則可以使用替代接口進行請求。 當嘗試使用帶有promise和async / await的請求進行API調用時,我遇到了一些不可預測的行為,涉及API響應。 我改用了request-promise( https://github.com/request/request-promise ),它是根據請求構建的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.