RSPEC将空数组解释为缺乏葡萄的参数



我有一个Ruby(非轨道(应用程序,该应用程序使用葡萄来暴露API端点。端点之一需要一个值为值数组的参数,但也接受一个空数组:

requires :user_ids, type: Array, allow_blank: true

使用卷曲或邮递员手动测试端点时,这一切都很好,并且空数组被正确解释为参数user_ids: []。但是,当RSPEC值为空数组时,RSPEC似乎省略了整个参数(当然,非空数阵列可以很好地工作(:

let(:params) { { user_ids: [] } }
let(:route) { post "api/users/remove", params }

在这种情况下,实际上通过的参数相等的 {}和葡萄的requires后卫启动,不允许端点执行任何操作。

不确定它是一个错误还是功能,以及如何强制RSPEC作为参数传递此空数组(以RSPEC 3.4和3.6的方式行事(。

使用params.to_json并将标题'content_type'设置为'application/json'

为每个人都想知道:

  1. 这是由Rack::Test实现而非RSpec引起的。
  2. Bartosz的答案有一个快捷方式:
post 'api/users/remove', params: params, as: :json

最新更新