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) }
答案 0 :(得分:1)
尝试:
for(:update, params: { params: { id: user.to_param, user: valid_attributes } })
这很难看,但这对我有用。
更新:找到我的解决方法并在此修复号码 https://github.com/thoughtbot/shoulda-matchers/issues/867