不使用.method / .call存储和调用Ruby方法

时间:2011-12-15 17:39:00

标签: ruby unit-testing testunit

我正在为大批代码添加单元测试,并且正在寻找一种方法来插入虚假方法以进行测试。问题是,据我所知,在Ruby中,要在一个方法中传递方法必须使用ClassName.method(:method_name),然后重构我正在测试的方法以使用boo.call()而不是boo() }。有没有比使用.method.call重构所有内容更简单的方法?

1 个答案:

答案 0 :(得分:1)

为什么不通过lambdas?我的意思是,lambda只是一个匿名方法/函数,因为你从其他语言中知道它,所以它应该工作正常。例如:

fake_method = lambda { |n| "do something with n" }

def other_method(fm)
  #...
  fm.call
  #...
end

other_method(fake_method)

您仍然需要拨打.call