Jasmine'期望'如何等待量角器承诺解决

Gal*_*Ziv 7 jasmine protractor

我正在进行e2e测试.我有一个确认弹出窗口在页面上不存在,直到我点击一个按钮.一旦确认弹出窗口被创建,我就从那里的元素中获取文本.

之后,我单击OK按钮,这会导致从DOM中删除确认弹出窗口,并且还会向DOM添加一个新元素,其值为我之前获得的文本.

问题是,因为getText()返回一个promise,当我进行比较时,屏幕上没有第一个元素,测试失败.

如果我确实期望屏幕上的确认弹出窗口,我可以看到确认弹出元素的文本.

Jasmine期望()如何解决这个承诺?

提前致谢

ava*_*sen 6

像这样的东西?

element(by.id('dangerous-activity')).click().then(function () {
  element(by.id('confirmation-text')).getText().then(function (textToConfirm) {
    element(by.id('confirm-button')).click().then(function () {
      element(by.id('new-element')).getText().then(function (newText)) {
        expect(newText).toBe(textToConfirm);
      });
    });
  });
});
Run Code Online (Sandbox Code Playgroud)

这里所有的承诺都是明确解决的,所以Jasmine不再需要解决任何承诺了.

您可以expect解决new-element承诺,将最后两行替换为:

    ....
      expect(element(by.id('new-element')).getText()).toBe(textToConfirm);
    ....
Run Code Online (Sandbox Code Playgroud)

但你不能得到textToConfirm同样的期望,因为它已经消失了,如你所指出的那样.