【发布时间】:2015-06-25 17:35:01
【问题描述】:
Protractor 公开的许多函数都返回了 Promise。
我是否需要使用 Protractor 构建我的 Jasmine 测试,使用异步测试(使用 done 参数)和 .then 之类的东西,或者 Protractor 是否为我提供了一些魔法?
【问题讨论】:
标签: javascript promise protractor
Protractor 公开的许多函数都返回了 Promise。
我是否需要使用 Protractor 构建我的 Jasmine 测试,使用异步测试(使用 done 参数)和 .then 之类的东西,或者 Protractor 是否为我提供了一些魔法?
【问题讨论】:
标签: javascript promise protractor
WebDriverJS 通过控制流来处理这个问题。 Protractor 添加了对 Jasmine 的 expect 的修改,以阻止 thens。最好解释一下here。
【讨论】:
beforeEach 中进行了一些设置(例如,使用executeScript 在客户端上导航或运行脚本,甚至使用element(by.css...) 选择元素),我是否必须使用then? 使用普通的承诺语法?
beforeEach 在所有方面都与 it 块相同,除了在执行时。看一下这个问题,以了解then 在控制流方面的工作方式以及我们何时可能需要它:stackoverflow.com/questions/30949492/…
browser.controlFlow().execute(promiseFunc),其中promiseFunc 是一个返回承诺的函数。在这里都很好地解释了:github.com/SeleniumHQ/selenium/wiki/WebDriverJs#control-flows
foo,它在后台使用browser.driver.findElement,但这不会返回承诺。如果我从beforeEach 内部调用foo,我认为这会导致问题,因为不会返回承诺并因此对量角器可见?
是的,量角器执行一些魔法以等待每个承诺解决。
该过程的最佳描述在量角器文档中:How It Works。
这意味着我们不必使用done 将测试构造为异步。我们可以简单地使用expect(在 Jasmine 中)断言,一切都应该正常。
【讨论】: