gpt4 book ai didi

ruby - rspec 测试 ruby​​ 脚本

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

假设我们有一个像这样的 ruby​​ file.rb:

if __FILE__ == $0 then
if ARGV[0] == 'foo'
puts "working"
# Dir.chdir(../)
v = Someclass.new
v.do_something
end
end

它假设仅当文件像 ruby file.rb foo 一样被触发时才打印 working
我的问题:如何在 rspec 中测试那种东西?

我的尝试如下。文件运行但不在rspec测试范围内:
Dir expected :chdir with (any args) once, but received it 0 times

it 'should work' do
FILE = File.expand_path('file.rb')
RUBY = File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name'])
@v = Someclass.new
Someclass.should_receive(:new).and_return @v
@v.should_receive(:do_something)

`#{RUBY} #{FILE} foo`
end

最佳答案

Backticks 运行新的 shell,执行命令,并以字符串形式返回结果。这就是为什么它在您的范围之外运行。反引号不关心脚本的内容:ruby、bash 或其他内容。

chdir,当然,只适用于这个新的 shell,所以似乎没有办法检查你的目录更改示例脚本(跟踪系统调用除外)。也许一些“真正的”脚本会做一些事情,输出更多,从而提供更多的可能性来检查它。

关于ruby - rspec 测试 ruby​​ 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11794444/

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