簡體   English   中英

如何修復量角器中的依賴REST API調用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM