我最近将我的应用程序的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
将被视为关键字参数,此外,我将改变所有旧的哈希火箭用法,其中键是一个符号(正如我在建议的更改中所做的那样)