我需要编写一个方法,它接受未知数量的参数(因此是 *splat),但它通过了一个yields_with_args
规范。
编码:
def eval_block(*args, &block)
raise "NO BLOCK GIVEN!" if block.nil?
block.call(args)
end
rspec:
it "passes the arguments into the block" do
expect do |block|
eval_block(1, 2, 3, &block)
end.to yield_with_args(1, 2, 3)
end
end
它可以工作,但它会产生 *splat 创建的数组:[1,2,3]
vs 1,2,3
,因此不会通过 rspec。还有另一种方法可以通过 Ruby 中的方法传递多个参数吗?