【发布时间】:2017-01-06 11:16:32
【问题描述】:
我有两个班级:
LayerWrapper
Layer
哪些是页面对象。
我想重做方法:
export class LayerPanel {
public static layers = element.all(by.automationId('layer'));
public static findLayerByName(layerName: string): Promise<boolean> {
return this.layers.filter((elem) => {
return elem.getText().then(text => {
return text === layerName;
});
}).first().then(this.OK, this.Failed);
}
private static OK() {
return new Promise<true>();
}
private static Failed {
console.log('not found');
}
}
我想重构它,以便返回一个 Layer 页面对象:
public static findLayerByName(layerName: string): Promise<Layer> {
return this.layers.filter((elem) => {
return elem.getText().then(text => {
return text === layerName;
});
}).first().then(this.OK, this.Failed);
}
private static OK() {
return new Promise<Layer>();
}
似乎没问题,但也许这可以以更好的方式完成?
【问题讨论】:
-
您确定您的代码正常工作吗?似乎您的承诺工作不应该奏效。
-
你能说出原因吗?
-
你构造了一个
Promise的新实例而没有传递所需的函数,应该是:new Promise<true>((resolve, reject) => { ... }),这对我来说很奇怪,但也许你正在使用一个支持它的 Promise 实现跨度>
标签: javascript typescript promise protractor e2e-testing