gpt4 book ai didi

ruby-on-rails - 如何使用 Rspec 测试强参数?

转载 作者:数据小太阳 更新时间:2023-10-29 06:40:35 24 4
gpt4 key购买 nike

使用 Rspec 在 Rails Controller 中测试强参数过滤的实际策略是什么? (除了shoulda matchers)如何编写失败的测试然后让它变绿?

最佳答案

使用预期参数和所有(未满足的)参数创建 2 个哈希。然后将所有参数传递给操作并检查您的对象模型是否只接收预期的参数。如果您不使用强参数过滤器,则不会。然后将权限添加到参数并再次检查测试。

例如,这个:

# action
def create
User.create(params)
end

# spec
it 'creates a user' do
expect_any_instance_of(User).to receive(:create).
with({name: 'Sideshow Bob'}.with_indifferent_access)
post :create, user:
{ first_name: 'Sideshow', last_name: 'Bob', name: 'Sideshow Bob' }
end

会将所有参数传递给用户,测试将失败。当您过滤它们时:

def user_params
params.require(:user).permit(:name)
end

并使用 User.create(user_params) 更改操作,测试将通过。

关于ruby-on-rails - 如何使用 Rspec 测试强参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24292162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com