Rspec 将空数组解释为缺少 Grape 参数

Rspec interprets empty array as lack of parameter with Grape

我有一个 Ruby(非 Rails)应用程序,它使用 Grape 公开 API 端点。其中一个端点需要一个参数,该参数是一个值数组,但也接受一个空数组:

requires :user_ids, type: Array, allow_blank: true

这在使用 Curl 或 Postman 手动测试端点时一切正常 - 空数组被正确解释为参数 user_ids: []。但是,当 rspec 的值为空数组时,它似乎忽略了整个参数(当然,非空数组可以完美地工作):

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

在这种情况下,实际传递的参数等于 {} 并且 Grape 的 requires 守卫介入,不允许端点执行任何操作。

不确定它是错误还是功能以及如何强制 rspec 将此空数组作为参数传递(在 rspec 3.4 和 3.6 中都是如此)。

使用params.to_json并将header'CONTENT_TYPE'设置为'application/json'

对于所有想知道的人:

  1. 这是 而不是 RSpec 造成的。
  2. Bartosz 的回答有一个快捷方式:
post 'api/users/remove', params: params, as: :json