我想保留变量外部的getText()函数,以便我可以将它与测试中的后一个值匹配。例如:
页面对象文件:
this.numberOfAllLines = element(by.id('all_lines'));
this.tableCell = element(by.css('.table_results_lines'));
this.sumOfAllLinesText = element(by.id('sum_lines'));
规格文件:
var numberOfLines = '';
var newNumberOfLines = '';
describe(...
it(...
page.numberOfAllLines.getText().then(function(num) {
numberOfLines = num;
});
newNumberOfLines = numberOfLines + 10;
expect(page.tableCell.getText()).toEqual(newNumberOfLines);
// doing some clicks
expect(page.sumOfAllLinesText.getText()).toEqual(newNumberOfLines);
});
});
How do I return the response from an asynchronous call?未解答此问题。
答案 0 :(得分:1)
这段代码newNumberOfLines = numberOfLines + 10
是异步的,即使在numberOfLines = num;
的分配发生之前也会执行。
你在做什么是正确的。拥有一个包含要比较的值的全局变量。但是将赋值代码放在getText()
的链式承诺中。
it(...
page.numberOfAllLines.getText().then(function(num) {
numberOfLines = num;
newNumberOfLines = numberOfLines + 10;
});
expect(page.tableCell.getText()).toEqual(newNumberOfLines);