参数错误,由于ruby 3.0弃用



我最近将我的应用程序的ruby版本升级到3.0。之后,多个测试用例失败了,但是它们都是相同类型的。例如,post :create, :params => { :identifiedBy => { :label => epc }, :model => { :productId => productId } }orpost :create, :params => create_params_kc_with_tid

所有失败的测试用例给出相同的错误

ArgumentError: wrong number of arguments (given 2, expected 1)

我不确定根本原因,但我怀疑这是由于最近ruby 3.0的弃用,即Using the last argument as keyword parameters is deprecated

我不太确定如何修理它。请你也帮帮我。

:params => {}{params: {}}Hash,使用kwargs(关键字参数),语法与解析器相似,但明显不同。

要解决这个问题(并清理您的代码),将:symbol => value的所有实例更改为symbol: value

例如:

post :create, :params => { 
:identifiedBy => { :label => epc }, 
:model => { :productId => productId } }

post :create, params: { 
identifiedBy: { label: epc }, 
model:  { productId: productId } }

现在params将被视为关键字参数,此外,我将改变所有旧的哈希火箭用法,其中键是一个符号(正如我在建议的更改中所做的那样)