gpt4 book ai didi

Ruby 使用 Rspec stub Dir.glob

转载 作者:太空宇宙 更新时间:2023-11-03 18:25:46 26 4
gpt4 key购买 nike

我想用 rspec 测试我的类剧集,它在构造函数中接受一个字符串来确定剧集编号,搜索具有相应剧集编号的剧集字幕文件并设置剧集的字幕名称。

我面临的问题是我不想使用真实文件进行测试,也不想使用创建的假文件进行测试(已经这样做并且工作正常)。

我相信我需要 stub 调用 Dir.glob 但到目前为止我一直不走运。

有什么想法吗?

class Episode
attr_reader :avi_file, :subtitle_name, :number, :name, :directory

# an episode is instantiated with an avi filename
def initialize(avi)
@name = File.basename(avi, ".avi")
@directory = File.dirname(avi)
# Looking for an episode number in the form of
# s01e01 or 01x01
match_data = @name.match /(s\d{2,}e\d{2,}|\d{2,}x\d{2,})/i
@number = match_data.to_s
find_subtitle_in
puts self.subtitle_name
end



private

def find_subtitle_in
srt_files = Dir.glob("#{@directory}/*.srt")
@subtitle_name = srt_files.find { |e| /#{@number}/i =~ e }
end

end

规范

 it "does find a subtitle" do
episode = Episode.new "Friends s01e01.avi"
Dir.stub!(:glob){["Friends.s02e01 subtitle french.srt", "Friends.s01e01 subtitle french.srt" ]}
episode.subtitle_name.should == "Friends.s01e01 subtitle french.srt"
end

rspec 的输出

1) 剧集确实找到了字幕 失败/错误:episode.subtitle_name.should == "Friends.s01e01 subtitle french.srt" 预期:“Friends.s01e01 字幕 french.srt” 得到:无(使用==) # ./spec/lib/episode_spec.rb:25:in `block (2 levels) in '

最佳答案

试试这个:

it "does find a subtitle" do
Dir.stub!(:glob){["Friends.s02e01 subtitle french.srt", "Friends.s01e01 subtitle french.srt" ]}
episode = Episode.new "Friends s01e01.avi"
episode.subtitle_name.should == "Friends.s01e01 subtitle french.srt"
end

关于Ruby 使用 Rspec stub Dir.glob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11351375/

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