在 Nightwatch.js 中处理异步 Firebase 调用的最佳方法?

Best method to handle asynchronous Firebase calls in Nightwatch.js?

我有一个创建新用户的 Nightwatch 测试,然后在 Firebase 中查找用户的数据。问题是,测试是异步发生的,因为 Firebase 代码使用的是承诺,所以我用 setTimeOut 延迟了 Firebase 查询,以便在我查找之前提供测试时间来创建用户。 Javscript 代码如下所示:

driver.page.landing().navigate()
    .waitForPageLoad()
    .setValue('@emailField', user.email)
    .click('@submitButton')
  driver.pause(5000)

setTimeout(()=> {
    firebase.getLeadsInfoByEmail(user.email).then(result => {
      firebase.exitFirebase()

    driver.page.register()
        .assert.equal(result.email, user.email)
    })
  }, 6000)
}
};

我的问题是:是否有另一种编码方式,以便 Firebase 查询发生在 某些代码已经 运行 之后?

我想通了:由于 Node.js 异步执行语句,您需要使用 Nightwatch Perform 函数将 运行 作为队列的一部分。所以代码看起来像:

 driver.page.landing().navigate()
    .waitForPageLoad()
    .setValue('@emailField', user.email)
    .click('@submitButton')
    .api.perform(function() {
      firebase.getLeadsInfoByEmail(user.email).then(result => {
        firebase.exitFirebase()
        driver.page.register()
          .assert.equal(result.email, user.email)
    })
  }
};