0

I am using "soap" for testing my application wsdls in protractor. this is the code I am using enter image description here

I want 'servicechitest' function to return "results" object(highlighted in the screenshot). It prints expected output to the console. Not sure where can I place return statement to get results object.

4

1 回答 1

1

您需要实现一个承诺以从异步方法中获取值。你可以使用qnpm 的模块来实现 promise。

要安装q,在终端中运行以下命令,

npm install q

q下载后,在您的应用程序中使用它,如下所示,

var q= require('q');

servicehitest : function () {
    var url ="someurl";
    var args= [];
    var defered = q.defer();
    soap.creatClient(url,creatClient);
    function  clientCreate(err,client) {
        if(err){
            console.log("in error block");
            console.log(client.describe());
        }
        client.getInstrument(args,instrument);
        function instrument(err,result){
            if(err){
                defered.reject(err);
            } else {
                console.log(result);
                defered.resolve(result);
            }
        }
    }
    return defered.promise;
}

要从servicehitest方法获取结果,请使用以下代码。

servicehitest().then(function(result){
  //this method will be called when the result is obtained from getInstrument() method.
  console.log("Successfully got result:"+result);
},
function(error){
  //error callback method will be called if there is any error from getInstrument() method.
console.log("Some error occured:"+error);
})
于 2017-05-31T05:17:36.287 回答