【发布时间】:2021-06-29 17:15:11
【问题描述】:
我的 Rails 项目中有一个 Rake 任务,它通过 system 调用执行 openssl。
代码如下所示:
system('bash', '-c', 'openssl cms -verify...')
我需要在 bash 而不是 dash(这是 Ubuntu 上的默认设置)中运行命令才能在命令中使用进程替换。
我需要使用 rspec 创建一个测试,以检查在这种情况下,参数 verify 是否按预期传递。
我尝试了以下方法:
expect(Kernel).to receive(:system) do |args|
expect(args[2]).to match(/verify/)
end
但是,这只会给我发送到系统的第一个字符串中的第三个字母 - 即来自 bash 的字母 s - 而不是系统调用中发送的第三个参数。
我在这里做错了什么?任何建议将不胜感激。
【问题讨论】:
标签: ruby-on-rails ruby rspec