Я вызываю функцию из моего теста, которая выполняет вызов службы API и возвращает значение. Я могу напечатать значение переменной из моего теста, который возвращается каждый раз. Однако строки кода после этого не выполняются.
Это происходит периодически.
Основная функция:
it('Test1', function () {
element(by.xpath("xpath of the element1")).click();
response = homepo.getValuefromAPI();
response.then(function(value){
console.log("**********value inside Main*****************");
console.log((value));
element(by.xpath("xpath of the element2")).sendKeys(value);
browser.sleep(3000);
element(by.xpath("xpath of button']")).click();
expect(value).toBe("expected value");
});
});
Функция, которая возвращает обещание:
getValuefromAPI(){
var deffered = protractor.promise.defer();
var options = {
method: 'POST',
url: 'url',
headers:
{'Content-Type': 'application/json'},
body:
{json body},
};
request(options, function (error, response, body) {
let responseData = JSON.stringify(body);
console.log("**********responseData inside function*****************");
console.log(responseData);
console.log("*******************Id*****************");
console.log(body.content[0].data.section.class.repository[0].period.points[0].id);
deffered.fulfill(body.content[0].data.section.class.repository[0].period.points[0].id);
});
return deffered.promise;
}
Выход:
**********responseData inside function*****************
ABCDFEGHIJKLMNOPQRSTUVWXYZ
*******************Id*****************
ABCDFEGHIJKLMNOPQRSTUVWXYZ
**********value inside Main*****************
ABCDFEGHIJKLMNOPQRSTUVWXYZ
x Test1
- Expected 'ABCDFEGHIJKLMNOPQRSTUVWXYZ' to be 'expected value'.
Действие sendKeys и действие click после этого (в основном тесте) пропускаются большую часть времени, и элемент управления непосредственно переходит к выражению ожидаемого. Иногда эти операторы выполняются без проблем.
Что-то не так с тем, как я справляюсь с обещанием?
Обновление : Теперь я также попытался выполнить вызов API внутри блока 'it' вместо возврата значения. Однако строки по-прежнему не выполняются.
it('Test1', function () {
var options = {
method: 'POST',
url: 'url',
headers:
{
'Content-Type': 'application/json'
},
body:
{
json body
},
};
request(options, function (error, response, body) {
let responseData = JSON.stringify(body);
console.log("**********responseData inside function*****************");
console.log(responseData);
console.log("*******************Id*****************");
console.log(body.content[0].data.section.class.repository[0].period.points[0].id);
element(by.xpath("xpath of the element1")).click();
console.log("**********value inside Main*****************");
console.log((value));
browser.sleep(2000); //This line is not getitng executed
element(by.xpath("xpath of the element2")).sendKeys(value); //This line is not getitng executed
browser.sleep(2000); //This line is not getitng executed
element(by.xpath("xpath of button']")).click(); //This line is not getitng executed
browser.sleep(2000); //This line is not getitng executed
expect(value).toBe("expected value");
});
});