如何使用 Capybara 测试 OPTIONS 请求?
Posted
技术标签:
【中文标题】如何使用 Capybara 测试 OPTIONS 请求?【英文标题】:How to test OPTIONS request with Capybara? 【发布时间】:2015-09-04 18:36:01 【问题描述】:用 Capybara 测试 OPTIONS 响应的好方法是什么?
用例:需要为 CORS 配置 Rails 应用响应标头。我知道这不是“用户体验”的一部分。但是,如果浏览器无法发出请求,用户将无法使用该网站。
【问题讨论】:
【参考方案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
应用程序,所以测试设置似乎有问题...
编辑以反映控制器规格现在不鼓励使用的事实。以上是关于如何使用 Capybara 测试 OPTIONS 请求?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Capybara + Selenium 测试响应代码
如何使用rails cucumber,rspec,capybara在视图(dhtml)中测试动态部分?
如何使用 Capybara Rspec Matchers 测试演示者?
如何使用 capybara DSL 测试 Select2 元素?
问:如何使用 Turnip、capybara 和 Gherkin 测试 ActionMailer Deliver_later