当前位置:  开发笔记 > 后端 > 正文

用Ruby模拟构造函数

如何解决《用Ruby模拟构造函数》经验,为你挑选了1个好方法。

我是一个Java开发人员,玩弄Ruby并喜欢它.我已经明白,由于Ruby的元编程功能,我的单元测试变得更加清晰,我不需要讨厌的模拟框架.我有一个类需要File该类的服务,在我的测试中我不想触及我的真实文件系统.在Java中,我会使用一些虚拟文件系统来更容易地"接缝"传递虚假对象,但在Ruby中显然有点过分.与Java世界相比,我的出现似乎已经非常好了.在我的测试类中,我有一个可选的构造函数参数:

def initialize(file_class=File)

当我需要在课堂上打开文件时,我可以这样做:

@file_class.open(filename)

并且调用转到真正的File类,或者在我的单元测试的情况下,它转到一个不接触文件系统的假类.我知道元编程必须有更好的方法吗?



1> Brian Philli..:

Mocha(http://mocha.rubyforge.org/)是一个非常好的ruby模拟库.根据您实际想要测试的内容(例如,如果您想伪造File.new调用以避免文件系统依赖性,或者如果您想验证正确的参数是否传递到File.new),您可以执行此操作这样的事情:


require 'mocha'

mock_file_obj = mock("My Mock File") do
  stubs(:some_instance_method).returns("foo")
end

File.stubs(:new).with(is_a(String)).returns(mock_file_obj)


我认为没有必要对模拟库感到厌恶.Mocha正在为您做元线程编程(即重写方法等),您要求手动执行.
推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有