ruby – 模拟文件输入作为Rspec上的文件路径
发布时间:2020-12-17 02:33:36 所属栏目:百科 来源:网络整理
导读:我有一个关于如何使用rspec模拟文件输入的问题.我有一个类的以下代码,但不完全知道模拟文件输入的原因. filepath是/ path / to / the / file 我在Google上进行了搜索,结果通常是加载实际文件而不是模拟,但我实际上看起来相反,只有模拟,但不使用实际文件. mod
我有一个关于如何使用rspec模拟文件输入的问题.我有一个类的以下代码,但不完全知道模拟文件输入的原因. filepath是/ path / to / the / file
我在Google上进行了搜索,结果通常是加载实际文件而不是模拟,但我实际上看起来相反,只有模拟,但不使用实际文件. module Service class Signing def initialize(filepath) @config = YAML.load_file(filepath) raise "Missing config file." if @config.nil? end def sign() … end private def which() … end end end 是否可以使用EOF分隔符进行此文件输入模拟? file = <<EOF A_NAME: ABC A_ALIAS: my_alias EOF 解决方法
您可以存根YAML.load_file并从文本中返回已解析的YAML,如下所示:
yaml_text = <<-EOF A_NAME: ABC A_ALIAS: my_alias EOF yaml = YAML.load(yaml_text) filepath = "bogus_filename.yml" YAML.stub(:load_file).with(filepath).and_return(yaml) 这并没有完全隐藏文件加载本身,但为了做到这一点,你必须假设YAML.load_file在幕后做了什么,这不是一个好主意.由于可以安全地假设已经测试了YAML实现,因此您可以使用上面的代码将整个调用替换为从文本解析的夹具. 如果要测试将正确的文件名传递给load_file,请将stub替换为期望值: YAML.should_receive(:load_file).with(filepath).and_return(yaml) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |