Angularjs 使用TypeScript从页面对象返回承诺值

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

我试图使用TypeScript从量角器解决方案中的WebDriver promise返回一个值,但得到的响应是
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");