我有一个程序将运行多个系统命令。我知道如何做到这一点的最简单的方法是使用“符号”。我想为这些工具构建测试,而不必在系统上运行那些系统命令。
有没有办法可以模拟系统的响应?
答案 0 :(得分:0)
如果你的代码运行了很多外部命令,你应该创建一个简单的包装器并模拟:
def wants_to_run_external_command(command_runner)
command_runner.run('echo "hello world"')
end
并像这样测试:
it 'echos "hello world"' do
command_runner = double()
command_runner.should_receive(:run).with('echo "hello world"')
subject.wants_to_run_external_command(command_runner)
end
如果你想要更整洁,你可以使用命令运行符实例初始化你的对象,这样你就不必将它传递给方法了。