【问题标题】:How to test OPTIONS request with Capybara?如何使用 Capybara 测试 OPTIONS 请求?
【发布时间】:2015-09-04 18:36:01
【问题描述】:

用 Capybara 测试 OPTIONS 响应的好方法是什么?

用例:需要为 CORS 配置 Rails 应用响应标头。我知道这不是“用户体验”的一部分。但是,如果浏览器无法发出请求,用户将无法使用该网站。

【问题讨论】:

    标签: ruby-on-rails http http-headers cors capybara


    【解决方案1】:

    使用 Capybara 测试 OPTIONS 响应的一个好方法是不使用 Capybara。

    除了玩笑,最好在 controller test 请求规范中完成,因为它不涉及任何实际的 html 解析。

    RSpec.describe 'Rabbits' do
      describe "GET /rabbits/:id" do
        it "enables CORS" do
          get rabbit_path(rabbit)
          expect(response.headers['Access-Control-Allow-Origin']).to eq "*"
        end
      end
    end
    

    您可以使用process :show, "OPTIONS" [1] 测试OPTIONS http 方法

    【讨论】:

    • 基本上你不应该使用 Capybara,因为除了发送 GET 请求(使用 visit)之外的任何东西都需要一些非常痛苦的 hack,根据正在使用的驱动程序可能会或可能不会起作用(例如rack_test、poltergeist 或 selenium)。 Capybara 也很慢,因为它的级别非常高,而且比控制器测试要多得多。
    • 请注意,通过表单或 JS 发送 POST 或删除是另一种情况。我说的是从 capybara 发送原始 OPTIONS 请求。
    • 我收到了undefined method 'call' for 应用程序,所以测试设置似乎有问题...
    • 编辑以反映控制器规格现在不鼓励使用的事实。
    猜你喜欢
    • 2014-11-10
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    相关资源
    最近更新 更多