gpt4 book ai didi

ruby - 在 Ruby 中模拟构造函数

转载 作者:数据小太阳 更新时间:2023-10-29 07:42:20 25 4
gpt4 key购买 nike

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

def initialize(file_class=File)

当我需要在类里面打开文件时,我可以这样做:

@file_class.open(filename)

并且调用转到真正的文件类,或者在我的单元测试的情况下,它转到不接触文件系统的假类。我知道一定有更好的方法用元编程来做到这一点?

最佳答案

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)

关于ruby - 在 Ruby 中模拟构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com