我有一个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查询?
答案 0 :(得分:0)
我发现了这一点:由于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)
})
}
};