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



我有一个Nightwatch测试,它创建了一个新用户,然后在Firebase中查找用户的数据。问题是,测试是异步进行的,因为 Firebase 代码使用的是 promises,因此我使用 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 Execute 函数作为队列的一部分运行。因此,代码如下所示:

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)
})
}
};

最新更新