如何解决这个"功能测试中的位置参数已被弃用"警告?

时间:2017-02-12 14:31:55

标签: ruby-on-rails

Rails 5在我的测试中引入了一些弃用消息

DEPRECATION WARNING: Using positional arguments in functional tests has been deprecated,
in favor of keyword arguments, and will be removed in Rails 5.1.

Deprecated style:
get :show, { id: 1 }, nil, { notice: "This is a flash message" }

New keyword style:
get :show, params: { id: 1 }, flash: { notice: "This is a flash message" },
  session: nil # Can safely be omitted.

在大多数情况下,这些都很容易解决。消息中的说明非常清楚。

但我仍然会收到针对测试强对手的控制器规格的警告。

如何重写以下内容以准备Rails 5.1?

let(:user) { create :user }
it { is_expected.to permit( :name, :email ).for(:update, params: { id: user.to_param, user: valid_attributes } ).on(:user) }

1 个答案:

答案 0 :(得分:1)

尝试:

for(:update, params: { params: { id: user.to_param, user: valid_attributes } })  

这很难看,但这对我有用。

更新:找到我的解决方法并在此修复号码 https://github.com/thoughtbot/shoulda-matchers/issues/867