我是一位Java开发人员,喜欢Ruby。我了解到,由于Ruby的元编程设施,我的单元测试变得更干净,而且我不需要讨厌的嘲笑框架。我有一门课需要File
班的服务,在我的测试中,我不想碰我真正的文件系统。在Java中,我会使用一些虚拟文件系统来更容易的“接缝”来传递伪造对象,但是在Ruby中显然是过度的。与Java世界相比,我所提出的似乎已经非常好。在我的测试类我有一个可选的构造函数参数:Ruby中的嘲讽构造函数
def initialize(file_class=File)
当我需要我的类中打开文件,然后我就可以做到这一点:
@file_class.open(filename)
和呼叫转移到任何真正的文件类,或者在我的单元测试的情况下,它会转到一个不接触文件系统的假类。我知道用metaprogramming必须有更好的方法来做到这一点吗?
是的,我只是不想使用嘲笑库。你真的需要Ruby吗? – auramo 2008-09-16 13:43:47