Angularjs 使用TypeScript从页面对象返回承诺值
我试图使用TypeScript从量角器解决方案中的WebDriver promise返回一个值,但得到的响应是Angularjs 使用TypeScript从页面对象返回承诺值,angularjs,selenium,typescript,webdriver,protractor,Angularjs,Selenium,Typescript,Webdriver,Protractor,我试图使用TypeScript从量角器解决方案中的WebDriver promise返回一个值,但得到的响应是undefined get nameInput(): string { var value: string; this.nameElement.getAttribute('value').then(v => value = v); return value; } 在上面的例子中,函数似乎没有等待承诺返回,因此我尝试远离getter样式,并将返回类型声明为W
undefined
get nameInput(): string {
var value: string;
this.nameElement.getAttribute('value').then(v => value = v);
return value;
}
在上面的例子中,函数似乎没有等待承诺返回,因此我尝试远离getter样式,并将返回类型声明为WebDriver的承诺:
getNameInput(): webdriver.promise.Promise<string> {
var nameElement = element(by.id('name'));
return nameElement.getText().then(v => { return v });
}
getNameInput():webdriver.promise.promise{
var namelement=element(by.id('name'));
返回namelement.getText().then(v=>{return v});
}
但是我得到的是函数
作为返回值,而不是v
的值。Jasmine的expect
,似乎并没有像在JS中运行它时那样打开承诺
我知道我可以在expect中直接运行promise,但理想情况下,我会在任何预期之外创建所有函数的逻辑,这样我就可以只使用任何(如果有的话)参数将预期输入函数调用,而不是使用promise逻辑污染测试用例
有什么想法吗?你不需要解决这些承诺,只要把它们还给你: 请注意,您还允许
expect()
隐式解析它:
expect(getNameInput()).toEqual("Expected Value");
getNameInput().then(v => { console.log(v) });
expect(getNameInput()).toEqual("Expected Value");