【问题标题】:create a post request using poltergeist and capybara使用 poltergeist 和 capybara 创建发布请求
【发布时间】:2013-06-04 04:19:45
【问题描述】:

我正在从默认 Rack 驱动程序支持的 Capybara 过渡到 Poltergeist 支持的 Capybara。

出于令人沮丧的原因,我需要在加载页面之前处理会话数据。但是我不知道如何直接使用 Rack 驱动程序来操作会话,所以我

Capybara.current_session.driver.submit :post, "/current_search", {:session => :data }

不幸的是,Poltergeist driver 对象没有 submit 方法,就像 Rack 驱动程序一样。

有三种可能:

  • 如何使用 poltergeist/phantomjs 提交 POST 请求?(实现这似乎是最简单的)
  • 如何使用 poltergeist/phantomjs 直接操作会话数据?
  • 我可以重构代码,从而不再需要直接操作会话数据。这会很耗时,而且优先级较低。

PS:由于使用 Ruby 1.8,我们被困在Poltergeist v1.0.2

【问题讨论】:

    标签: ruby-on-rails rspec capybara phantomjs poltergeist


    【解决方案1】:

    capybara 的想法是测试用户交互,因此您可以像用户一样执行 POST 请求。

    你的情况是这样的:

    visit '/search'
    fill_in '.search-box', :with => "search query"
    click_on "Submit"
    

    有什么理由不这样做吗?

    【讨论】:

    • 带有表单的页面非常依赖javascript,而我实际测试的甚至不需要javascript。因此,对于每个单独的测试来说,似乎都需要进行大量不相关的设置,这很容易占用测试运行一半以上的时间。
    • 目前规格已被注释掉。很快我们就会让有问题的视图接受 GET 参数;然后将重新添加这些测试。因为你是完全正确的,我们只是以一种无法测试的方式写了这个。
    • @chadoh,我现在明白你的问题了。是的,最好的解决方案是重构它,但也许您现在可以尝试解决方案here。记得在某个地方添加一个故事,以便在有时间时尽快对其进行重构。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-08
    • 2015-07-29
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    相关资源
    最近更新 更多