gpt4 book ai didi

ruby - 如何测试使用 rspec 的 block 的函数

转载 作者:数据小太阳 更新时间:2023-10-29 06:47:01 26 4
gpt4 key购买 nike

我有一个函数,它接受一个 block ,打开一个文件,产生并返回:

def start &block
.....do some stuff
File.open("filename", "w") do |f|
f.write("something")
....do some more stuff
yield
end
end

我正在尝试使用 rspec 为其编写测试。我如何 stub File.open 以便它将对象 f(由我提供)传递给 block 而不是尝试打开实际文件?像这样的东西:

it "should test something" do
myobject = double("File", {'write' => true})
File.should_receive(:open).with(&blk) do |myobject|
f.should_receive(:write)
blk.should_receive(:yield) (or somethig like that)
end
end

最佳答案

我想你要找的是yield matchers ,即:

it "should test something" do
# just an example
expect { |b| my_object.start(&b) }.to yield_with_no_args
end

关于ruby - 如何测试使用 rspec 的 block 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14955519/

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