代码之家  ›  专栏  ›  技术社区  ›  Jesse McCann

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

  •  0
  • Jesse McCann  · 技术社区  · 6 年前

    我有一个夜视测试,创建一个新用户,然后在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查询 之后 某些代码已运行?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Jesse McCann    6 年前

    我想出来了:因为节点。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)
        })
      }
    };