Jasmine 量角器-强制getText()解析,因为元素在测试期间已移除

Jasmine 量角器-强制getText()解析,因为元素在测试期间已移除,jasmine,promise,protractor,Jasmine,Promise,Protractor,我正在为我的angular应用程序编写测试。 我在用量角器测量茉莉花 页面中的流程如下所示: 1) 点击按钮| 2) 处理程序创建一个包含以下内容的div:bar| 3) 元素(by.id('foo')).getText().then(函数(数据){var some-var-i-declared-previous=data})| 4) 单击从DOM中删除此div的按钮| 5) 此元素值需要assertation| element(by...).click(); // step 1 var tex

我正在为我的angular应用程序编写测试。 我在用量角器测量茉莉花

页面中的流程如下所示: 1) 点击按钮| 2) 处理程序创建一个包含以下内容的div:bar| 3) 元素(by.id('foo')).getText().then(函数(数据){var some-var-i-declared-previous=data})| 4) 单击从DOM中删除此div的按钮| 5) 此元素值需要assertation|

element(by...).click(); // step 1
var text = element(by.id('foo')).getText(); // step 3
element(by...).click(); // step 4
expect(text).toEqual('the-right-value'); // step 5
问题将是这个承诺被解决,元素不存在,因此我得到null。 如果我在按下删除div的按钮之前确实期望(这解决了承诺),我可以看到我需要的值

问题是流必须在我预期之前删除div

我如何才能迫使承诺下定决心,以实现其价值? 当然,任何其他解决方案都是非常受欢迎的

提前谢谢

1)单击按钮| 2)处理程序创建一个包含以下内容的div:bar | 3)元素(by.id('foo')).getText()。然后(函数(数据){var some-var-i-declared-previous=data});|4) 单击一个按钮,从DOM中删除此div | 5)expect assertation for this element value|

element(by...).click(); // step 1
var text = element(by.id('foo')).getText(); // step 3
element(by...).click(); // step 4
expect(text).toEqual('the-right-value'); // step 5
当您只是将文本数据分配给some-var-i-declared-previous时,原始数据不起作用的原因是因为这个值是在一个承诺中分配的。这意味着当您到达assert语句时,赋值尚未完成(读取)。事实上,在断言运行时,步骤1甚至还没有执行

或者,您可以这样做(这有助于您了解发生了什么,但与第一个答案相比,它不够简洁):


首先感谢你的评论。我可以按照你的建议去做,因为我需要“toEqual”的值是在我单击一个按钮后创建的,该按钮使元素从DOM中删除。