2011-12-15 13 views
1

我将单元测试添加到大量代码中,并且正在寻找一种方法来插入伪造方法以用于测试目的。问题在于,据我所知,在Ruby中传递一个方法必须使用ClassName.method(:method_name),然后重构我测试使用boo.call()而不是仅仅使用boo()的方法。有没有更容易的方法来做到这一点比重构所有使用.method.call不使用.method/.call存储和调用Ruby方法

+0

也许嘲笑方法会帮助你?我不确定测试:unit,但在rspec中他们很棒。 – 2011-12-15 17:47:18

+0

这就是我最终做的。我已经知道flexmock可以做到这一点,但想要更有表现力的东西,并且很难找到比纯Ruby更具表现力的东西(即假货),但不会以重构我的代码库为代价。 – 2011-12-15 20:06:07

回答

1

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

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

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

other_method(fake_method) 

你仍然需要调用.call虽然

相关问题