gpt4 book ai didi

ruby - 使用 Mocha 去除类方法

转载 作者:数据小太阳 更新时间:2023-10-29 08:15:58 27 4
gpt4 key购买 nike

我想使用 rspec 和 Mocha 测试一个方法。我的目标是 stub Dir.glob 以便只返回一个文件的简单数组。该方法定义如下:

def my_method
Dir.glob("#{upload_dir}/*.pdf").each do |file|
...
end
end

和测试:

it "ignores a file of no size" do
zero_file = File.expand_path("../fixtures/zero_size_file_12345.pdf", __FILE__)
Dir.expects(:glob).returns([zero_file])

...
end

问题是方法 upload_dir 不是我想在这里测试的东西,我假设如果我停止了对 Dir.glob 的任何调用,那么 upload_dir 永远不会被调用。如果我在调用 Dir.glob 之前放入调试器并调用 Dir.glob,那么我会看到我的一个零文件数组,因此 stub 肯定有效。但是,当测试实际调用方法 Dir.glob("#{upload_dir}/*.pdf") 时,它会尝试调用 upload_dir

我正在使用 Ruby 1.9.3、rspec 2.12.0 和 mocha 0.13.0。

最佳答案

它调用 upload_dir 是因为它必须构建要传递给 glob 的字符串。你可以通过添加类似的东西来 stub 它 -

[YourClass].expects(:upload_dir).returns("foo")

然后期望您的代码将“foo/*.pdf”传递给 glob。

关于ruby - 使用 Mocha 去除类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13689336/

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