在终端上连续提示用户输入时,使用Rspec测试STDIN和STDOUT

时间:2019-02-03 10:25:05

标签: ruby rspec

我正在使用rspec在一个程序中测试stdout和stdin,在该程序中,我会不断提示用户输入命令。

我尝试遵循this的答案,但我无法使其正常工作,并且无论如何它都已被弃用。

我正在测试的代码:

def prompt_input
  puts "Input:"

  while user_input = $stdin.gets.chomp 
    puts "Output:"
    puts "Created a parking lot with 6 slots"
    puts "Input:"
  end
end

我写的测试:

describe '#prompt_input' do
  it 'sends a prompt to terminal' do
    expect(STDOUT).to receive(:puts).with("Input:")
    allow(STDIN).to receive(:gets) { 'create_parking_lot 3' }
    expect(STDOUT).to receive(:puts).with("Output:", "Created a parking lot with 3 slots", "Input:")
  end
end

编辑:将代码更改为当前看到的代码。仍然无法正常工作

0 个答案:

没有答案