经过大量研究和反复试验,我选择了以下堆栈进行前端 BDD 测试:
- 黄瓜.js
- CasperJS(通过 SpookyJS)
- 幻影JS
我想避免 CasperJS 运行队列并直接(通过phantom-proxy)使用 PhantomJS,并在每个步骤中使用回调:
@World = (cb) ->
@phantom = require "phantom-proxy"
cb()
@Before (cb) ->
self = this
@phantom.create {}, (proxy) ->
self.proxy = proxy
self.page = proxy.page
cb()
@After (cb) ->
@proxy.end ->
cb()
@When /^I go to url "([^"]*)"$/, (url, cb) ->
@page.open url, ->
cb()
使整体更具逻辑性和 BDD 式。
此外,SpookyJS 没有为 CasperJS 提供完整的 API。
然而,PhantomJS API 是相当低级的。是否有任何其他工具可以在不使用运行队列的情况下为 Node.js 提供类似 CasperJS 的功能(单击、等待元素等)?