2017-02-12 67 views
2

导轨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

我猜你使用的是一些早该?可能需要更新版本。 – phoet

+0

谢谢@phoet,是的,我正在使用应匹配器。但是我的问题可能比这更笼统(不确定,因为我对Rails 5引入的控制器更改以及现在的Rails方法有些困惑)。看起来,不应该测试控制器内部,并且该控制器规格不是前进的方式https://github.com/rails/rails/issues/18950。从广义上讲,你如何以及在哪里测试一个控制器在Rails 5中允许正确的参数? –

+0

也许你应该改说你的问题呢?我认为摆脱控制器测试赞成集成测试是愚蠢的,但我不是DHH,所以我知道什么... – phoet

回答

相关问题