在功能测试中链接Promises / Observables的最优雅方法

时间:2019-01-22 11:13:17

标签: angular typescript protractor observable

以下是我正在研究的项目中的现有测试的示例:

AppPage.lastnameInput().clear().then(function () {
  AppPage.lastnameInput().sendKeys(lastname).then(function () {
    AppPage.firstnameInput().clear().then(function () {
      AppPage.firstnameInput().sendKeys(firstname).then(function () {
        AppPage.ibanInput().clear().then(function () {
          AppPage.ibanInput().sendKeys(IBAN).then(function () {
            $('body').click().then(function () {
              callback();
            });
          });
        });
      });
    });
  });
});

在我看来,这可以展平。就像是 。

foo(
  AppPage.lastnameInput().clear(),
  AppPage.lastnameInput().sendKeys(lastname),
  AppPage.firstnameInput().clear(),
  AppPage.firstnameInput().sendKeys(firstname),
  AppPage.ibanInput().clear(),
  AppPage.ibanInput().sendKeys(IBAN),
  $('body').click(),
).then(() => callback())

我尝试了forkJoin(),但似乎并没有等到第一个Observable完成之前再执行下一个。

我可以自己实现这种功能,但是它看起来很通用,所以我想知道是否已经存在一个更标准的功能。

1 个答案:

答案 0 :(得分:1)

您可以使用concat()函数按顺序执行多个可观察对象(而不是在forkJoin()工作时并行执行)。