我有一个私有方法,我试图在
Ruby中使用#send进行一些测试.该方法很复杂,我不希望暴露在类之外,因此我想测试该方法,但我也不需要将其列为公共方法.它有关键字参数.如何使用send来调用方法,还可以传递关键字参数/命名参数?有办法吗?
该方法如下所示:
def some_method(keyword_arg1:,keyword_arg2:,keyword_arg3:nil)
解决方法
取决于如何定义关键字args.
如果它们因任何原因而内联定义,请将它们内联传递:
SomeClass.send(:some_method,{keyword_arg1: 'foo',keyword_arg2: 'bar'})
如果它们是在哈希中定义的,则可以将其解压缩:
hash = {keyword_arg1: 'baz',keyword_arg2: 'bing'} SomeClass.send(:some_method,**hash)